我目前在轨道表单中有一个多选框,如下所示:
= select_tag :in_all_tags, options_from_collection_for_select(Tag.where(:project_id => @project.id), :id, :name, @in_all_tags_param), { :id => "tags", :tabindex => "3", "data-placeholder" => "Choose Tags", :multiple => "multiple" }
哪里
@in_all_tags_param = params[:in_all_tags]
问题是,@in_all_tags_param
只会使用params[:in_all_tags]
中的最后一个值填充选择表单。因此,如果url字符串显示为in_all_tags=5&in_all_tags=8
,则多重选择中的预选值将仅为8。
根据我的理解,解决此问题的方法是将[]
附加到多个参数的字段名称,以便:in_all_tags
变为in_all_tags[]
但是,当我尝试这个时,提交表单会返回:
Expected type :default in params[:in_all_tags], got Array
任何建议表示赞赏。
干杯...
答案 0 :(得分:0)
您需要将:name
元素添加到其中包含:multiple => true
的相同哈希中。所以我在我的应用程序上使用了类似的类型,我做{ :multiple => true, :name => "lesson[genre_ids][]" }
。名称必须为model[attribute][]
。