Ruby on Rails 응용 프로그램에서 Devise를 사용하고 있습니다. 사용자가 자신의 계정에 가입하거나 업데이트 할 때 AddressInformation
을 생성/업데이트하려고합니다.레일 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
내가 누락 된 항목에 대한 아이디어가 있으십니까? 당신이를 첨부해야 strong parameters and nested attributes 작업 할 때 또한
= f.fields_for :address_information, resource.address_information do |address_field|
로 변경해야 :address_information
속성을 기대하고 있기 때문에 양식 정의에서
그냥 오타 일 수도 있습니다. 허용되지 않은 매개 변수는': address_informations'이지만'configure_account_update_params'에': address_information'을 허용합니다. –
@DerekHopper'address_informations :'도 사용하려고했지만 동일한 결과가 나온다. – Anders