Rails多选框:从params注入默认值

时间:2012-09-13 21:34:28

标签: ruby-on-rails multiple-select

我目前在轨道表单中有一个多选框,如下所示:

= 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

任何建议表示赞赏。

干杯...

1 个答案:

答案 0 :(得分:0)

您需要将:name元素添加到其中包含:multiple => true的相同哈希中。所以我在我的应用程序上使用了类似的类型,我做{ :multiple => true, :name => "lesson[genre_ids][]" }。名称必须为model[attribute][]