Ruby on RailsアプリケーションでDeviseを使用しています。ユーザーが自分のアカウントにサインアップしたり更新したりするときには、AddressInformation
を作成/更新する必要があります。Rails 5、ネストされた属性、許容されないパラメータを作成する
class User < ApplicationRecord belongs_to :address_information accepts_nested_attributes_for :address_information, allow_destroy: true [...]
は私の_form.html.haml
は以下のようになります。私は私が手にユーザーを更新しようとすると、次の
class Users::RegistrationsController < Devise::RegistrationsController
before_action :configure_sign_up_params, only: [:create]
before_action :configure_account_update_params, only: [:update]
[...]
# If you have extra params to permit, append them to the sanitizer.
def configure_account_update_params
devise_parameter_sanitizer.permit(:account_update, keys: [
:name,
address_information: [
:address,
:care_of,
:zip_code,
:country,
:state
]
])
end
:私はこのような属性を追加しようとしました
= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f|
= devise_error_messages!
.form-group
= f.label :name
= f.text_field :name
= f.fields_for :address_informations, resource.address_information do |address_field|
.form-group
= address_field.label :address
= address_field.text_field :address
.form-group
= address_field.label :care_of
= address_field.text_field :care_of
.form-group
= address_field.label :zip_code
= address_field.text_field :zip_code
.form-group
= address_field.label :city
= address_field.text_field :city
エラー:
Unpermitted parameter: :address_informations
(0.2ms) BEGIN
(0.2ms) ROLLBACK
私には何が欠けていますか?フォーム定義で
たぶん入力ミスですか?許可されていないパラメータは ':address_informations'ですが、' configure_account_update_params'に ':address_information'を許可しています。 –
@DerekHopper私は 'address_informations:'も使用しようとしましたが、同じ結果が得られます。 – Anders