バーテンダーエンジニア

元フレアバーテンダーからエンジニアに転職。未経験からのエンジニア転職経験談・実務で感じたこと・個人開発で学んだ内容・日常話などマイペースに発信していきます。仕事ではphp、Laravel、Vue.js、Angular辺りを触ってます。趣味は筋トレ!!ソムリエの資格も持ってます^^

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