Question

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.

Was it helpful?

Solution 2

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 => []).

OTHER TIPS

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

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' %>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top