次のようなsimple_form入力フィールドがあります。
<%= f.input :particular_users, collection: @all_users, input_html: { class: 'multiselectuser', multiple: true} %>
Multiple:trueをオフにすると、フォームはパラメーター:particular_usersに選択した値を送信し、「raise params.inspect」を使用してデバッグするときに値を確認できます。ただし、そこにmultiple:trueオプションを残すと、パラメーター:particular_usersに値が渡されません。
私は何を間違えていますか?
EDIT::particular_usersは仮想属性であり、関係がないため、関連付け入力を使用できません。複数選択ボックスには、任意の値であっても、そこにある値をすべて渡すようにします。
実際に私が望んでいたように動作します。トリックは、強力なパラメーターにハッシュを許可するよう指示することです。強力なパラメーターエラーはスローされません。パラメーターはスローされ、通過しません。したがって、たとえばparams.require(:survey).permit(:particular_users => [])に設定します。
f.input :days, collection: @your_collection, input_html: { multiple: true }
simple_form
で複数の選択タグを作成するには、次を使用します。
<%= f.association :particular_users, collection: @all_users, input_html: { class: 'multiselectuser'} %>
gem description のAssociations
の部分を参照してください。
ただし、ActiveRecordの関連付けを使用したくない場合は、select_tag
を使用します。
<%= select_tag 'particular_users',
options_from_collection_for_select(@all_users, :id, :name),
multiple: true, class: 'multiselectuser' %>