経緯
Railsではlink_to
ヘルパーにdata: {confirm: 'よろしいですか?'}
のように書くと、リンクをクリックしたときに確認のアラートが出るようにできます。
ただ、いつもどこでも、ajaxを飛ばすなど、リンク先に遷移するわけではありません。
そういうときに、confirmでOKされたときにだけ実行するJSの書き方。ここではCoffeeScriptを利用します。
やり方
やり方は簡単以下のとおり。
<%= link_to '部活をやめる', id: 'retire', data: { confirm: '部活をやめますか?' } %> <span class="message"></span>
$('#retire').on 'confirm:complete', (e, answer) -> if answer $('span.message').text("南部、部活やめるってよ")
ここで、data-confirm
がOKされたとき、’confirm:complete’というイベントが発火します。それを捉えて処理を実行するようになっています。
まとめ
このくらいの場合であれば、JSのconfirm()
関数を利用して作ってやってもいいかもしれませんが、Rubyで書いてやったほうがI18n対応が楽になります。Railsではconfirm:complete
のような独自のイベントをたくさん持っているので、イベント系で困ってもググれば意外と出てくるかもしれません。
コメントを残す