我在轨道上使用Ruby,但是在多选表单中显示数据库中的选定值时遇到问题。单选工作正常,但多选显示空白值,我已经检查了来自控制器的值,它们是正确的,但它不显示值!!我正在使用多选的jquery插件,但我认为这不是问题所在。
<!-- chosen select for course categories -->
<div class="row">
<div class="medium-5 column with_chosen">
<%= f.collection_select :categories,
Category.all ,:id,:name,
{ include_blank: false},
{ :multiple=>true, class: 'chosen-select medium', :data => { :placeholder => ' ' }}
%>
</div>
</div>
<!-- change partner for course -->
<div class="row">
<div class="medium-5 column">
<%= f.collection_select :partner,
Partner.all, :id,:name ,
{ include_blank: false },
{ class: 'chosen-select', :multiple=>false, :data => { :placeholder => ' Brand Partner' }}
%>
</div>
</div>
有什么建议会很棒吗?
可能适合你。
<!-- chosen select for course categories -->
<div class="row">
<div class="medium-5 column with_chosen">
<%= f.collection_select :categories,
{ :selected=>Category.all.collect{|c| c.id}},
{ include_blank: false},
{ :multiple=>true, class: 'chosen-select medium', :data => { :placeholder => ' ' }}
%>
</div>
</div>
<div class="row">
<div class="medium-5 column with_chosen">
<%@course_categories=[]%>
<% @course.categories.each do |t| %>
<% @course_categories << t.id.to_s %>
<% end %>
<%= f.collection_select( :categories,
Category.all ,:id,:name,
{ include_blank: true, selected: @course_categories },
{ :multiple=>true, class: 'chosen-select medium', :data => { :placeholder => ' ' }})
%>
</div>
</div>
所以我所做的是我向多选传递了一个转换为 sting 的 id 数组,然后它匹配 id 并显示数据库中的选定值!!