我有一个简单的下拉列表,我想从模型填充。我根本不想将它绑定到另一个模型,只是一个简单的独立表单,其中包含项目列表和句柄存储会话变量中下拉列表的状态,我可以使用更强大的方法实现它,如图所示它对我来说感觉不太好“。”
<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 :(得分:0)
查看form_tag,select_tag,options_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 %>
缺少“已选择”位,请查看相关文档。