form_with
<%= form_with url: posts_path do |f| %> <%= f.text_field :title %> <% end %>
postsコントローラにparams[:title]
を送る
<%= form_with scope: :post, url: posts_path do |f| %> <%= f.text_field :title %> <% end %>
postsコントローラにparams[:post][:title]
を送る
scopeオプションによってフィールド名にプレフィックスがつく
リソース指向の書き方
<%= form_with model: @post do |f| %> <%= f.text_field :title %> <% end %>
@userが空のオブジェクトかどうかによって動くアクションがよしなに決まる。
たとえば、@postが空ならpost#create、情報があればpost#updateにparams[:post][:title]
が送られる。
また、登録・更新に失敗したとき、フォーム内に入力値を残すことができる。@postに入力情報が保持されるため。
失敗時に元の画面をレンダーrender :new
などする場合、new/html/erbに情報の入った@postが渡される。
ネストされたリソース
boards/:id/commentsにリクエストをおくるとき
<%= form_with model: comment, url:[board, comment], local: true do |f| %>