2012-02-15 2 views
0

form_forのオブジェクトを作成してselect_tagを内部に入れると、選択した値がモデルハッシュ内のハッシュとしてparamsに送られると予想されます。 params[:model][:attribute1]です。なぜなら、これは過去に私が実際にテキストフィールドを持つ基本的なフォームがどのように動作していたからですか。ここでは該当しません。select_tagを持つmodel_forモデルオブジェクトはどのようにパラメータをネストしますか?

<%= form_for(@vote, url: judgment_votes_path(@vote.judgment)) do |i| %> 
<%= select_tag(:yayornay, options_for_select(%w[yes no undecided stand_aside])) %> 
    <div class='actions'> 
    <%= i.submit 'Save vote' %><br /> 
    </div> 
<% end %> 

上記は私にparams[:yayornay]です。 Apidockのform_forへのエントリーは、私の混乱を払拭するためにはほとんど分かりませんでした。私のselect_tagのようなパラメータをparams[:vote][:yayornay]のように簡単に構築する方法はありますか?

<%= i.select :yayornay, ... %> 

ORこのようselect_tagを使用します:

<%= select_tag "vote[yayornay]", ... %> 

あなたが "i.select" を使用すると、レールが構築し、あなたの場合は

答えて

1

select_tagヘルパーを使用しているため、選択タグの構文が少し使いやすくなります。フォームヘルパーをチェックアウトする:http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.htmlオブジェクトに対応する選択タグ(例:vote)。 select(:vote、:yayornay、...)やi.select(:yayornay、...)のようなselectヘルパーを使用することができます。

参考:フォームオブジェクトとして 'f'を使うのが一般的です、 私ではない'。

+1

この質問には参考になる優れた例があります。http://stackoverflow.com/questions/9297941/creating-a-drop-down-list-in-rails – ggentzke

1

、あなたはこのようにi.select使用しますか@voteのフォームオブジェクトを使用しているので自動的に "vote"という接頭辞を付けます。 "i.select"を使いたくない場合は、上記のようにselect要素の名前を手動で指定する必要があります。

これが役に立ちます。

関連する問題