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.
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 => []).
f.input :days, collection: @your_collection, input_html: { multiple: true }
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' %>