0

データベースからの値を使用してrubyに単純なドロップダウンを作成しようとしました-次のように:

<% ingredientArray = Ingredient.all.map { |ingredient| [ingredient.name, ingredient.id] } %>
<div class="field">
  <%= select_tag(:ingredient_id, ingredientArray) %><br/>
</div>

そして私は空っぽのものを受け取りました。
これは生成されたhtmlです

<div class="field">
   <select id="ingredient_id" name="ingredient_id">[[&quot;Paprika&quot;, 5], [&quot;Cinnamon&quot;, 8], [&quot;Salt&quot;, 9], [&quot;Pepper&quot;, 10], [&quot;water&quot;, 11]]</select><br/>
</div>

HTMLセージはどこに置くべきですか

4

2 に答える 2

2

select_tagおよび関連するメソッドに関するドキュメントを読む必要があります。その2番目のパラメーターは、選択ボックスのオプションタグを含む文字列です。手動で生成できます。

select_tag "people", "<option>David</option>".html_safe

または、options_from_collection_for_selectメソッドを使用します。

select_tag "people", options_from_collection_for_select(@people, "id", "name")

(ドキュメントからの例)

特にあなたの場合、そのドロップダウンを作成する最良の方法は次のとおりです。

<div class="field">
    <%= select_tag("Ingredients", options_from_collection_for_select(Ingredient.all, 'id', 'name')) %>
</div>
于 2012-04-28T18:01:39.383 に答える
0

collection_select次のように使用することもできます。

<%= collection_select :recipe, :ingredient_id, Ingredient.all, :id, :name, { prompt: "&ndash; Select an Ingredient &ndash;".html_safe } %>

(成分IDを割り当てようとしている親オブジェクトはであると想定して:recipeいます。アプリに合わせてその値を変更してください。)

于 2012-04-28T18:11:49.067 に答える