アルパカログ

Webエンジニア兼マネージャーがプログラミングやマネジメント、読んだ本のまとめを中心に書いてます。

Ruby on Rails リンクを生成するlink_toヘルパーで確認ダイアログ(confirm)を出す

f:id:otoyo0122:20200902095315p:plain:w300

リンクを生成してくれるlink_toヘルパーは、Ruby on Railsの数あるヘルパーのうちでもよく使われます。

link_toヘルパーは、リンクの記述をシンプルにするだけでなく、簡単に確認ダイアログ(confirm)を出すこともできます。

このエントリでは、Ruby on Rails 5においてlink_toヘルパーで確認ダイアログを出す方法を紹介します。

確認ダイアログを出すオプション

確認ダイアログ(confirm)を出したいケースとしてよくあるのは、削除ボタンだと思います。

削除ボタンを押したときに確認ダイアログを出すには、link_todataオプションに{ confirm: "本当に良いですか?" }のようなハッシュを渡します。

<%= link_to("削除する", url_for(...), method: :delete, data: { confirm: "本当に良いですか?" }) %>

削除は危険な操作なので、ボタンを赤くするためにCSSクラスを付与したいときはどうすれば良いでしょうか?

実は「confirmを出しつつボタンのスタイルを変える」という、一見するとなんでもないところでハマってしまいました。

link_toのドキュメントを見ると、引数は次のようになっています。

link_to(name = nil, options = nil, html_options = nil, &block)

data, methodはoptionsでclassはhtml_optionsだと勝手に思っていたのですが、どうやらclassもoptionsに含めるようです。

下記のようにすると上手くできます。

<%= link_to("削除する", url_for(...), method: :delete, data: { confirm: "本当に良いですか?" }, class: "btn btn-danger") %>

以上です。

このエントリでは、Ruby on Rails 5においてlink_toヘルパーで確認ダイアログを出す方法を紹介しました。

参考になった方は、ぜひ「はてブ」やSNSでシェアしていただけると嬉しいです。