#はじめに
Railsでオリジナルアプリを作成しています。indexアクションで表示されるページから直接updateアクションを実行したく、button_toメソッドを活用しました。
※今まで作ったアプリは、ツイートなどの登録一覧情報があるindexから詳細(show)ページに遷移します。そこから編集ページ(edit)に遷移して、情報を更新(update)します。このshow、editアクションを割愛して直接updateアクションを行いました。
開発環境
ruby 2.6.5
Rails 6.0.3.4
#目次
1.button_toの使い方
2.link_toとの違い
#1.button_toの使い方
よく使うlink_toと似ていて、リンクではなくボタンを作成できます。中身はシンプルでボタン名、パスやアクションそしてオプションで構成されます。デフォルトのHTTPメソッドはpostです。
<%= button_to "ボタン名", { パス or コントローラー名とアクション名 }, { オプション } %>
今回作成したのは下記の通り。suggestion_path(suggestion.id)はupdateのルーティングで設定したパスです。updateアクションのHTTPメソッドはpatchなので、デフォルトのpostから変える必要あり。
<%= button_to "掃除完了", suggestion_path(suggestion.id), method: :patch, class: "register-blue-btn" %>
#2.link_toとの違い
link_toのデフォルトHTTPメソッドはgetです。またlink_toはaタグを使ったリンクの生成に対し、button_toはフォームを生成します。
参考ページ
【Rails】button_toの使い方をどこよりもわかりやすく解説!
以上
所感
まだこの辺りきちんと理解できてないけど、アクションを実行したいならbutton_toなのかな?コントローラーも指定できることから、他コントローラーのアクションも実行できるようです。