2011-08-05 56 views
0

我有一個簡單的下拉列表,我想從模型中填充。我不想將它綁定到另一個模型,只是一個簡單的具有項目列表的獨立窗體,並將句柄存儲在會話變量中,我可以用更強大的方法實現它,如圖所示,但它對我來說並不感覺到'鐵軌'。Rails實現簡單下拉的方式

<form action='/home/switch' method='post'> 
    <select name="all_items"> 
    <% @items.each do |i| %> 
     <option value="<%= i.id %>" <%= i.id.to_s == session[:current_item] ? "selected" : "" %>><%= i.name %></option> 
    <% end %> 
    </select> 
    <input type="submit"> 
</form> 

有沒有更好的方式在Rails中做到這一點?

更新:是的。 collection_select工作對我來說:

<%= collection_select(:item, :id, Item.all, :id, :name, {:selected => session[:current_item].id}) %> 

回答

0

form_tagselect_tagoptions_from_collection_for_select,和/或collection_select看看。

所以你的例子可能是這樣的(未測試,可能有錯別字)

<%= form_tag('/home/switch') do %> 
<%= select_tag('all_items', options_from_collection_for_select(@items, 'id', 'name')) %> 
<%= submit_tag %> 
<%= end %> 

這是缺少「選擇」位,看看該文檔爲。

+0

我結束了使用collection_select –