web-dev-qa-db-ja.com

Ruby on Rails 4-simple_form複数選択入力

次のような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は仮想属性であり、関係がないため、関連付け入力を使用できません。複数選択ボックスには、任意の値であっても、そこにある値をすべて渡すようにします。

21
Travis Glover

実際に私が望んでいたように動作します。トリックは、強力なパラメーターにハッシュを許可するよう指示することです。強力なパラメーターエラーはスローされません。パラメーターはスローされ、通過しません。したがって、たとえばparams.require(:survey).permit(:particular_users => [])に設定します。

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

simple_formで複数の選択タグを作成するには、次を使用します。

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

gem descriptionAssociationsの部分を参照してください。

ただし、ActiveRecordの関連付けを使用したくない場合は、select_tagを使用します。

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