我有一个simple_form输入字段,如下所示:
<%= f.input :particular_users, collection: @all_users, input_html: { class: 'multiselectuser', multiple: true} %>
当我离开multiple:true off时,表单提交参数的选定值:specific_users,我可以在使用“raise params.inspect”进行调试时看到该值。但是当我在那里留下multiple:true选项时,没有为参数传递值:special_users。
我做错了什么?
编辑:我无法使用关联输入,因为:special_users是一个虚拟属性且没有任何关系。我希望多选框能够传递其中的任何值,即使它们是任意的。
答案 0 :(得分:39)
f.input :days, collection: @your_collection, input_html: { multiple: true }
答案 1 :(得分:14)
它确实以我想要的方式工作。诀窍是告诉强参数允许哈希。它不会抛出强参数错误,param会被抛出并且不会通过。所以我把它设置为例如:params.require(:survey).permit(:special_users =&gt; [])。
答案 2 :(得分:3)
要使用simple_form
创建多个选择标记,请使用:
<%= f.association :particular_users, collection: @all_users, input_html: { class: 'multiselectuser'} %>
请参阅gem description中的Associations
部分。
但由于您不想使用ActiveRecord关联,请使用select_tag
:
<%= select_tag 'particular_users',
options_from_collection_for_select(@all_users, :id, :name),
multiple: true, class: 'multiselectuser' %>