初めに
form_tag
しか使ったことがなく、form_with
はじめてだったのでまとめてみた
基本は備忘録
form_with
railsで情報を送信するためのヘルパーメソッド
DBに保存するとき
# インスタンスが空ならcreateアクションへ
# 情報が入っているならupdateアクションへ
<%= form_with model: モデルクラスのインスタンス do |form| %>
<!--フォーム内容 -->
<% end %>
# Contoroller
def new
@user = User.new
end
# View
# newアクションで生成したインスタンスを指定する
<%= form_with model: @user do |form| %>
<!--フォーム内容 -->
<% end %>
フォームの作り方
name
属性の値をkeyにparams
で入力内容を送る
受け取り方はparams[:モデル名][:key]
通常はストロングパラメータ
を定義してハッシュで一括受け取り
# form.htmlタグ名 :カラム名
# カラム名は保存先のテーブルのカラム名を指定
<%= form_with model: @user do |form| %>
<%= form.label :name %>
<%= form.text_field :name, class: "hoge" %>
<%= form.submit %>
<% end %>
DBに保存しないとき
name
属性の値をkeyにparams
で入力内容を送る
scope
を省いた場合params[:key]
で取得できる
scope
を用いた場合params[:スコープ名][:key]
で階層が1つ深くなる
<%= form_with url: "パス", scope: hoge, local: true do |form| %>
<!--フォーム内容 -->
<% end %>
html属性の付け方
<%= form_with model: @user, id: 'new_form' do |form| %>
<!--フォーム内容 -->
<% end %>
直接ControllerとActionを指定する
# Routeingがうまくいかない時は直接指定する
<%= form_with @user, url: {controller: 'users', action: 'index' } do |form| %>
<%= form.text_field :name %>
<%= form.submit %>
<% end %>
参考
【Rails】 form_withの使い方を徹底解説! | Pikawaka
使用可能なhtmlタグや使い方は参考先を確認