Reputation: 924
I have a simple_form input field that looks like this:
<%= f.input :particular_users, collection: @all_users, input_html: { class: 'multiselectuser', multiple: true} %>
When I leave multiple: true off, the form submits the chosen value for the parameter :particular_users and I can see the value when debugging using "raise params.inspect". However when I leave the multiple: true option there, no vales get passed for the parameter :particular_users.
What am I doing wrong?
EDIT: I can not use the association input because :particular_users is a virtual attribute and has no relationship. I want the multiple select box to pass whatever values that are in there, even if they are arbitrary.
Upvotes: 27
Views: 35279
Reputation: 734
f.input :days, collection: @your_collection, input_html: { multiple: true }
Upvotes: 60
Reputation: 924
It actually does work the way I wanted it to. The trick is to tell the strong parameters to allow a hash. It doesn't throw a strong parameters error, the param just gets thrown out and doesn't come through. So I set it to for example: params.require(:survey).permit(:particular_users => []).
Upvotes: 16
Reputation: 8668
To create multiple select tags with simple_form
, use:
<%= f.association :particular_users, collection: @all_users, input_html: { class: 'multiselectuser'} %>
see part Associations
in the gem description.
But as you don't want to use an ActiveRecord associaion, use select_tag
:
<%= select_tag 'particular_users',
options_from_collection_for_select(@all_users, :id, :name),
multiple: true, class: 'multiselectuser' %>
Upvotes: 4