form_withについて
はじめに
Railsでフォームを作成する際に使用するform_withについて調べてみたので備忘録として残しておきます。
form_withとは...
Rails5.1から追加されたヘルパーメソッドで、以前はフォームを作成したい時に関連したモデルがない場合はform_tag、モデルがある場合はform_forが利用されていました。今後は、form_withが主に利用されていくようです。
form_withの使い方
関連モデルのある場合
<%= form_with model: @user, local: true do |f| %> <%= f.text_field :name %> <%= f.submit %> <% end %>
オプションに、local: tureと入れる事でフォームのリモート + unobtrusive XHR送信が無効になります。
関連モデルのない場合(urlを指定する場合)
<%= form_with url: users_path, local: true do |f| %> <%= f.text_field :name %> <%= f.submit %> <% end %>
url:でフォームの送信先URLを指定しています。:urlではなく、:scopeとする事で現在のURLにフォームを送信する事も可能です。
最後に
form_withには、この他にも様々なオプションがあるので、今後も利用した際には続編としてまとめていきたいと思っています。
参考
Rails 5.1's form_with vs. form_tag vs. form_for – Patrik on Rails