2016-09-10 5 views
-1

array valuecheckboxを使用して送信しようとしたときに、array valueが届かないという問題がありました。ここで レールが配列値の強いパラメータを受け取りません

は私のコードです:これは migrationファイルです

create_table :users do |t| 
    t.string :email,    null: false, default: "" 
    t.string :encrypted_password, null: false, default: "" 
    t.text :receive_mail, array: true, default: [] 
    ... 

これは私がarray attributesを置くfunctionです:

def configure_sign_up_params 
    devise_parameter_sanitizer.permit(:sign_up, keys: [ 
    :address, 
    {receive_mail: []} 
    ]) 
end 

これはviewファイルです:

<div class="field"> 
    <%= f.collection_check_boxes(:receive_mail, [[0, "receive new article"], [1, "receive new ebook"]], :first, :last, include_hidden: false) do |b| %> 
    <%= b.label {b.check_box + b.text} %> 
    <% end %> 
</div> 

私が提出したとき、私はparamsをチェックし、それは"receive_mail"=>["0", "1"]と値を持っていましたが、permitedをチェックしたときには常に"receive_mail"=>[]を返します。

なぜ値を受け取っていないのかわかりませんでした。

ご協力いただければ幸いです。

答えて

0

あなたの問題は、keysオプションを使用したことに起因すると考えられます。これはシンボルの一覧のみを受け入れるようです。あなたは使用して試みることができる:

devise_parameter_sanitizer.permit(:sign_up, keys: [ 
    :address, 
    :receive_mail 
]) 

をしかし、私はあなたがDevise docsで述べたように、以下の問題が発生したと思う:あなたは、ユーザーが取ることの役割を表現するいくつかのチェックボックスを持っている場合は

ブラウザは選択されたチェックボックスを配列として送信します。配列は、スカラーを許可し、私たちは次のように工夫を設定する必要が...、ここではドキュメントからの例をもとに、あなたのコードのバリエーションがかもしれないことだということを考えると

強いパラメータの一つではありません仕事:

devise_parameter_sanitizer.permit(:sign_up) do |user_params| 
    user_params.permit({receive_mail: []}, :address) 
end 
+0

私はそれを試してみましたが、うまくいきませんでした。 –

関連する問題