2009-08-28 7 views

答えて

59

<%= form_tag '/person' do -%> 
    <%= text_field_tag "person", "first_name" %> 
<% end -%> 
53

form_forは、最初のargとしてactiverecordオブジェクトを優先します。

def new 
    @foo = Foo.new 
end 

ように、それはまた、ブロックにフォーム変数を渡しますようにそれは、あなたがコントローラで空のインスタンスを作成する必要があり、「新しい」ビューでそれを使用するために(簡単に作成または編集フォームを行うことができます

form_tagフォームタグを作成するだけで(もちろん、偽造防止の隠しフィールドを作成すると、form_forのように)、モデルの名前をフォーム内で繰り返す必要はありません。 ;これは非モデルフォームに最適です(私は実際には単純な検索フォームなどにのみ使用します)

同様に、form_remote_forform_remote_tagは、モデル関連のフォームには適していますが、モデル関連のフォームには適していませんが、標準のhttpメソッド(GET、POST ...)で終わるのではなく、ajaxメソッドを呼び出します。

このすべてとはるかにあなたがFormHelperPrototypeHelperリファレンスページに楽しむための利用可能です。

EDIT 2012-07-13

Prototypeはずっと前railsから削除されました、そして遠隔フォームが完全に変更されました。最初のリンクを参照し、のオプションをform_forform_tagの両方で指定してください。

<% form_for @person do |f| %> 
    <%= f.text_field :name %> 
<% end %> 

と::

<% form_for @person do |f| %> # you can use f here 

    First name: <%= f.text_field :first_name %> 
    Last name : <%= f.text_field :last_name %> 

<% end %> 

Form_tagは、基本的なフォームを作成するには、特定のモデルのためのform_for使用する

+0

2番目のリンクが機能しません。 – WowBow

+1

@WowBowあなたは正しいです。結局のところ、この答えはかなり古く、プロトタイプはずっと前から取り除かれています。私は私の答えを編集します。 – giorgian

+0

'form_for'がActiveRecordオブジェクトを「好む」とはどういう意味ですか? – shiggity

4

これらは類似しているはず

<%= form_tag '/person' do %> 
    <%= text_field_tag "person[name]" %> 
<% end %> 

コントローラに同じパラメータを送信する場合は、これを明示的に定義する必要があります。

+0

短く正確です。 [美しい診察] –

関連する問題