Ruby on Rails 4 - simple_form多选输入

27

我有一个类似于这样的simple_form输入字段:

<%= f.input :particular_users, collection: @all_users, input_html: { class: 'multiselectuser', multiple: true} %>

当我关闭 multiple: true 选项时,表单会提交 :particular_users 参数的选择值,我可以在使用 "raise params.inspect" 调试时看到该值。然而当我将 multiple: true 选项留在那里时,没有值传递给 :particular_users 参数。

我做错了什么?

编辑:我不能使用关联输入,因为 :particular_users 是虚拟属性并且没有关联。我希望多选框可以传递其中的任何值,即使它们是任意的。

3个回答

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

你能解释一下你在这里做什么吗?那会帮助很多。 - MZaragoza
如果您使用simple_form gem并且想要多选,只需将此属性添加到input_html即可。 - user3177153
由于某种原因,它不允许取消选择。 - undefined

16

实际上它按照我想要的方式运行。诀窍是告诉强参数允许哈希。它不会抛出强参数错误,该参数只会被丢弃并且不会传递过来。所以我将其设置为:params.require(:survey).permit(:particular_users => [])。


你解决了吗?我在我的强参数中有一个白名单数组,但是无法解决这个问题。http://stackoverflow.com/questions/41627957/rails-5-acts-as-taggable-on-gem-form-select-for-defined-tag-lists/41628074?noredirect=1#comment70459089_41628074 - Mel

4

使用simple_form创建多个选择标签,示例代码如下:

<%= f.association :particular_users, collection: @all_users, input_html: { class: 'multiselectuser'} %>

请看gem描述中的Associations部分。但是,如果您不想使用ActiveRecord关联,请使用select_tag
<%= select_tag 'particular_users', 
       options_from_collection_for_select(@all_users, :id, :name), 
       multiple: true, class: 'multiselectuser' %>

我收到了错误信息:“Association: particular_users not found”,因为:particular_users是一个虚拟属性而不是关联。我不想选择一个关联,我只想让参数传递多选框中的内容,即使它们是任意值。 - Travis Glover
1
如果简单表单不适合您,请使用 select_tag 来构建自定义选择框。 - Martin M
这正是我想要的。我发了正确的答案。 - Travis Glover

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接