2012-04-28 118 views
0

填充時,文本分析問題,試圖在Ruby中創建簡單的下拉列表從數據庫中值 - 這樣的:紅寶石 - 從數據庫

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

,我收到了一個empy。
這是生成的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聖人

回答

2

您應該select_tag和相關方法閱讀文檔。 它的第二個參數是一個包含選擇框選項標籤的字符串。 可以手動生成:

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> 
0

您還可以使用collection_select像這樣:

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

(我假設你想指定成分ID來是:recipe父對象。根據您的應用更改該值。)