2016-09-10 3 views
-1

У меня была проблема, что он не получил array value, когда я попытался отправить array value, который я использовал checkbox.рельсы не получают значение массива сильный параметр

Вот мой код:

Это 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: [] 
    ... 

Это function, который я поставил array attributes:

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

Спасибо за ваш ответ, я попробовал, но это не сработало. –

 Смежные вопросы

  • Нет связанных вопросов^_^