おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

Railsのフォーム作成メソッドform_tagとform_for

form_tagとform_forの引数がいつもごっちゃになってしまうのでメモっておきます。

form_tag

フォーマット
form_tag(url_for_options = {}, options = {}, *parameters_for_url, &block) 

(2008/7/22修正しました)

form_tag { :controller => "user", :action => "update" }, { :method => :put } do
  # ...
end

form_for

フォーマット
form_for(record_or_name_or_array, *args, &proc) 
  # ...

初期値を格納してあるオブジェクト名と、取得したいモデルオブジェクト名が一緒な場合はこう。

form_for :user, :url => { :action => "update" }, :html => { :method => :put } do |form|
  # ...
end

初期値を格納してあるオブジェクト名と、取得したいモデルオブジェクト名が別な場合は、モデルオブジェクト名を第一引数、初期値が格納してあるオブジェクトを第二引数に指定する。

form_for :user, @hoge, :url => { :action => "update" }, :html => { :method => :put } do |form|
  # ...
end