モデルなどからフォームタグを生成
適応バージョン
- 5.1.7
- 5.2.3
- 6.0.2.1
- 7.0.0
説明
URL、スコープ、モデルなどからフォームタグを生成
使い方
form_with(model: モデル=nil, scope: スコープ=nil, url: URL=nil, format: フォーマット=nil, オプション引数, ブロック引数)
オプション
| オプション | 説明 | デフォルト値 |
|---|---|---|
| :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との違い
- デフォルトではid属性やclass属性は付与されない
- デフォルトでremote: trueが付与
- モデルの属性にない値も指定が可能