アルパカログ

プログラミングとマネジメントがメインです。時々エモいのも書きます。

【Rails5】link_toにdataとclassを同時に指定する

link_to ヘルパーはRuby on Railsの数ある便利なヘルパーのうちのひとつです。

link_to ヘルパーを使うとリンク先の指定がシンプルになるだけではありません。

POSTやDELETEなどのHTTPメソッドが指定でき、さらに data オプションを指定するだけで confirm を簡単に出せるのがとても便利なところです。

confirm を出したいケースとしてよくあるのが削除ボタンでしょう。そして削除は得てして危険な操作なので、目立つようボタンを赤くしたいというニーズがあると思います。

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

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

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

:data, :method は options で :class は html_options だと勝手に思っていました。

しかし、下記のように同じハッシュで指定すると上手くできます。

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

options と html_options の違いがちょっとわかりません。

:data:class も同じハッシュで指定しなければいけないみたいです 🤔

stackoverflow.com