Ruby on Rails 4 - simple_form多选输入

时间:2014-03-03 23:17:14

标签: ruby-on-rails ruby simple-form

我有一个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是一个虚拟属性且没有任何关系。我希望多选框能够传递其中的任何值,即使它们是任意的。

3 个答案:

答案 0 :(得分:39)

f.input :days, collection: @your_collection, input_html: { multiple: true }

答案 1 :(得分:14)

它确实以我想要的方式工作。诀窍是告诉强参数允许哈希。它不会抛出强参数错误,param会被抛出并且不会通过。所以我把它设置为例如:params.require(:survey).permit(:spe​​cial_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' %>