web-dev-qa-db-fra.com

Ruby on Rails 4 - entrée de sélection multiple simple_form

J'ai un champ de saisie simple_form qui ressemble à ceci:

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

Lorsque je laisse multiple: true off, le formulaire soumet la valeur choisie pour le paramètre: particular_users et je peux voir la valeur lors du débogage à l'aide de "raise params.inspect". Cependant, lorsque je laisse l'option multiple: true là, aucune valeur n'est transmise pour le paramètre: particular_users.

Qu'est-ce que je fais mal?

EDIT: Je ne peux pas utiliser l'entrée d'association car: particular_users est un attribut virtuel et n'a aucune relation. Je veux que la boîte de sélection multiple transmette toutes les valeurs qui s'y trouvent, même si elles sont arbitraires.

22
Travis Glover

En fait, cela fonctionne comme je le voulais. L'astuce consiste à dire les paramètres forts pour autoriser un hachage. Il ne lance pas une erreur de paramètres forte, le paramètre est simplement rejeté et ne passe pas. Je l'ai donc défini par exemple: params.require (: survey) .permit (: particular_users => []).

16
Travis Glover
f.input :days, collection: @your_collection, input_html: { multiple: true }
48
user3177153

Pour créer plusieurs balises de sélection avec simple_form, utilisation:

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

voir la partie Associations dans le description de la gemme .

Mais comme vous ne voulez pas utiliser d'association ActiveRecord, utilisez select_tag:

<%= select_tag 'particular_users', 
       options_from_collection_for_select(@all_users, :id, :name), 
       multiple: true, class: 'multiselectuser' %>
3
Martin M