我在一个表单中有多个相同的集合选择。出于美学和用户体验的原因,我更喜欢这个多选列表。我必须使用一个可怕的 kludge 才能使一切正常,我想知道是否有更优雅的方法来做到这一点:
从观点来看:
<% 3.times do |i| %>
<%= collection_select("selected_item_" + i.to_s.to_s, :name, @items, :name, :name, { :include_blank => true }, { id: "selected_item_" + i.to_s }) %>
<% end %>
从控制器:
ItemContainer = Struct.new(:name)
3.times do |i|
param = ('selected_item_' + i.to_s).to_sym
instance_variable = '@' + param_name
if params[param] && !params[param].empty?
@selected_items << params[param][:name]
instance_variable_set(instance_variable, ItemContainer.new(params[param][:name]))
end
end
@selected_channels.each.... # do what I need to with these selections
这些体操中的大多数都需要确保在页面刷新时仍然选择该项目。如果有某种方法可以强制集合选择使用数组,那将是答案,但我无法做到这一点。