古いバージョンのドキュメントです。最新のバージョンはRails7.0.0

Railsドキュメント(v6.0.2.1)

モデルなどからフォームタグを生成

説明

URL、スコープ、モデルなどからフォームタグを生成

使い方

form_with(モデル or スコープ or URL [, オプション])

オプション

オプション 説明 デフォルト値
:url URLを指定  
:method HTTPメソッドを指定 POST
:format フォーマットを指定 text/html
:scope スコープを指定  
:namespace 名前空間を指定  
:model モデルを指定  
:authenticity_token 認証トークンを指定  
:local リモート送信の無効 false
:skip_enforcing_utf8 送信時にutf8という名前の隠しフィールドを非表示 false
:builder フォームで使うモデルをオーバライド  
:id id属性を指定  
:class class属性を指定  
:data data属性を指定  
:html id、class、data以外のHTMLタグ  

URLからフォームを生成(form_tag的な使い方)

<%= form_with url: posts_path do |form| %>
  <%= form.text_field :title %>
<% end %>
# <form action="/posts" method="post" data-remote="true">
#  <input type="text" name="title">
# </form>

モデルを指定してフォームを生成(form_for的な使い方)

<%= form_with model: Post.new do |form| %>
  <%= form.text_field :title %>
<% end %>
# <form action="/posts" method="post" data-remote="true">
# <input type="text" name="post[title]">
# </form>

スコープを指定してフォームを生成

<%= form_with scope: :post, url: posts_path do |form| %>
  <%= form.text_field :title %>
<% end %>
# <form action="/posts" method="post" data-remote="true">
# <input type="text" name="post[title]">
# </form>

開始タグのみ生成

form_with(model: @post, url: super_posts_path)

form_forやform_tagとの違い

ソースコード