Travis Glover
Travis Glover

Reputation: 924

Ruby on Rails 4 - simple_form multiple select input

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

Answers (3)

user3177153
user3177153

Reputation: 734

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

Upvotes: 60

Travis Glover
Travis Glover

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

Martin M
Martin M

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

Related Questions