Railsドキュメント

特定のモデルに特化したフォームを生成

適応バージョン

説明

特定のモデルに特化したフォームを生成
form_withの利用を推奨(Rails5.1以降はform_forとform_tagはform_withに統合されたため)

使い方

form_for(モデルオブジェクト [, オプション]) do |f|
  フォームの本体
end

オプション

オプション 説明 デフォルト値
:as ハッシュのキー名前  
:url フォームの送信先  
:namespace 名前空間の設定  
:method メソッド(get, post, patch, put, deleteなど)  
:authenticity_token 認証トークン  
:remote JavaScriptを使うか false
:enforce_utf8 utf8用の非表示用を出力するか? true
:html タグの属性  
:format フォーマット  

特定のモデルに特化したフォームを生成

form_for(@user) do |f|
end
# <form action="/users" class="new_user" id="new_user" method="post">
# </form>

urlオプション

form_for @user, url: {action: 'update'} do |f|
end
# <form action="/users/update" class="new_user" id="new_user" method="post">
# </form>

HTML属性を指定

form_for(@user, html: {multipart: true}) do |f|
end
# <form action="/users" class="new_user" enctype="multipart/form-data" id="new_user" method="post">
# </form>

ハッシュのキー名を変更

form_for(@person, as: :client) do |f|
end
# params[:client]で取得できるようになる

フォーマット指定

form_for(@post, format: :json) do |f|
end

JavaScriptを使用

form_for(@post, remote: true) do |f|
end
# <form action='http://www.example.com' method='post' data-remote='true'>
# <input name='_method' type='hidden' value='patch' />
# </form>

HTML属性を指定

form_for(@post, data: { behavior: "autosave" }, html: { name: "go" }) do |f|
end
# <form action='http://www.example.com' method='post' data-behavior='autosave' name='go'>
# <input name='_method' type='hidden' value='patch' />
# </form>

外部リソースへのForm

form_for @invoice, url: external_url, authenticity_token: 'external_token' do |f|
end

認証トークンを使わない外部リソースへのForm

form_for @invoice, url: external_url, authenticity_token: false do |f|
end

ソースコード