6

のリストにデフォルト値を持つ選択メニューを作成する必要があります<options>。これが私が必要とする方法です。

<select name="menu[parent_id]" id="menu_parent_id">
 <option value="0">==None==</option>
 <option value="34">TEST</option>
</select>

現在select、私は自分のフォームでこのヘルパーを使用しています

   <%= f.select(:parent_id, @parent_menus.collect {|p| [ p.name, p.id ] }, {:include_blank => '==None=='})%>

上記のコードはこれを生成します。( value="")

<select name="menu[parent_id]" id="menu_parent_id">
 <option value="">==None==</option>
 <option value="34">TEST</option>
</select>

value="0"オプションリストに追加する方法を教えてくれる人はいますか?

4

4 に答える 4

9
<%= f.select(:parent_id, [["==None==", 0]] + @parent_menus.collect {|p| [ p.name, p.id ] }) %>
于 2010-05-05T10:02:40.203 に答える
1

「なし」値ではなく、ドロップダウンのオブジェクトの1つであるデフォルトの選択値を実行しようとしている人にこれを追加すると思いました。つまり、以前の値が選択されているフォームを編集していて、編集ページで以前の値を失いたくない場合:

@parents に保持されている親の配列があり、フォームが @my_messed_up_family というオブジェクトに関連付けられており、@my_messed_up_family には 1 つの「父」があると仮定します。

= f.label :parent_id, "Choose which of your parents is your father?

= f.select :parent_id, options_from_collection_for_select(@parents.sort_by {|n| n.name}, "id", "name", :selected=>@my_messed_up_family.father.id)
于 2012-10-03T15:36:30.803 に答える
1

試す

<%= f.select(:parent_id, options_for_select(["==None==", 0] + @parent_menus.collect {|p| [ p.name, p.id ] }, 0)) %>
于 2010-05-05T10:39:08.773 に答える
0

これがRubyのやり方かどうかはわかりませんが、これは間違いなく機能します

<%= f.select(:parent_id, "<option value='0'>Please select</option>"+options_for_select(@parent_menus.collect {|p| [ p.name, p.id ] }))%>

編集済み。データベースに保存された値に従って事前に選択されている場合、@user は次の例のデータベース値を含むオブジェクトであると仮定します。

<%= f.select(:parent_id, "<option value='0'>Please select</option>"+options_for_select(@parent_menus.collect {|p| [ p.name, p.id ] }, @user.id ))%>
于 2010-05-05T11:09:54.580 に答える