Rails实现简单下拉列表的方式

时间:2011-08-05 01:23:29

标签: ruby-on-rails-3

我有一个简单的下拉列表,我想从模型填充。我根本不想将它绑定到另一个模型,只是一个简单的独立表单,其中包含项目列表和句柄存储会话变量中下拉列表的状态,我可以使用更强大的方法实现它,如图所示它对我来说感觉不太好“。”

<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}) %>

1 个答案:

答案 0 :(得分: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 %>

缺少“已选择”位,请查看相关文档。