我在表单中有一个collection_select
实例,我想知道是否有可能在同一个表单中有两个或更多个实例。它们是从同一个模型构建的,它们会像在Article.all.each
循环中构造的复选框一样保存。让这些工作
<%= f.collection_select("article_ids", Article.where(:page => 1), :id, :name) %>
<%= f.collection_select("article_ids", Article.where(:page => 2), :id, :name) %>
<%= f.collection_select("article_ids", Article.where(:page => 3), :id, :name) %>
表格中的几乎就是我所追求的。它本质上是一个多重选择,但分布在几个选择上。该字段已经接受了多个结果,但是当我保存表单时,它只记录最终选择的选项。有什么想法吗?
干杯!
答案 0 :(得分:1)
<%= select_tag "article_ids[]",options_from_collection_for_select(Article.all.collect{|i| [i.name,i.id]),:multiple => true %>
当选择列表中的多个选项时,只需给出article_ids [],它会在您编写查询后如何在数据库中存储所有ID。
如果设置选择标记为多个,则您将选择多个选项其他明智的您只获得一个选定值。
或者只是阅读以下链接
http://api.rubyonrails.org/?q=collection%20select
如果你想给f.select那么你必须这样给出
<%= f.collection_select :article_id, Article.all, :id , :name %>
答案 1 :(得分:0)
我只是选择了复选框来解决这个问题,因为这真的是噩梦。
<% @articles.each do |a| %>
<%= check_box_tag("doc[article_ids][]", a.id, @doc.articles.include?(a.id), :class => "article_chooser") %> <a id="<%= a.id %>" class="name"><%= a.name %></a><br />
<% end %>