2011-08-05 55 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 –