0

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

= 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只会使用 from 的最后一个值填充选择表单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

任何建议表示赞赏。

干杯...

4

1 回答 1

0

您需要将一个:name元素添加到与:multiple => true它相同的哈希中。所以我在我的应用程序上使用了类似的流派,我也这样做了{ :multiple => true, :name => "lesson[genre_ids][]" }。名字必须是model[attribute][]

于 2012-09-13T21:40:20.197 回答