form_forとform_tagの違いは何ですか?form_remote_forとform_remote_tagで何か違いはありますか?
回答:
form_for
最初の引数として、activerecordオブジェクトを優先します。作成または編集フォームを簡単に作成できます(「新しい」ビューで使用するには、次のようにコントローラーで空のインスタンスを作成する必要があります。
def new
@foo = Foo.new
end
また、フォーム変数をブロックに渡すため、フォーム自体の中でモデル名を繰り返す必要はありません。これは、モデル関連のフォームを作成するための推奨される方法です。
form_tag
フォームタグを作成するだけです(もちろん、のような偽造防止の隠しフィールドを静かに準備しform_for
ます)。モデル以外のフォームに最適です(実際には、単純な検索フォームなどにのみ使用します)。
同様にform_remote_for
、form_remote_tag
はモデル関連のフォームに適しており、モデル関連のフォームには適していませんが、標準のhttpメソッド(GET、POST ...)で終わる代わりに、ajaxメソッドを呼び出します。
FormHelperでは、これらすべてとはるかに多くの機能を利用できます。 およびPrototypeHelper リファレンスページ。
編集2012-07-13
Prototype
はrails
ずっと前から削除され、リモートフォームは完全に変更されました。reguardで、最初のリンクを参照してください:remote
両方のオプションform_for
とform_tag
。
form_for
ActiveRecordオブジェクトを「優先する」とはどういう意味ですか?
これらは似ているはずです:
<% form_for @person do |f| %>
<%= f.text_field :name %>
<% end %>
そして:
<%= form_tag '/person' do %>
<%= text_field_tag "person[name]" %>
<% end %>
同じパラメーターをコントローラーに送信する場合は、これを明示的に定義する必要があります。