1

나는 simple_form.fields_for 트러블을 경험 -레일 ActiveModel :: ForbiddenAttributesError은 - 저장하는 동안 ActiveModel :: ForbiddenAttributesError в simple_form nested_fields

가 예약 컨트롤러에서

'생성'작업이 그렇게 보인다 금지 속성 오류 :

def create 
     ... 
     new_params = params[:booking] 
     new_params[:user_attributes] = new_params[:user_attributes].merge({"password"=>"osmsmsmsm32"}) # password is temp stuff to bypass User save validation 
     @booking = Booking.new 

     @booking.update(params) 
     # however @booking.user.update(params[:booking][:user_attributes]) gives the same error 
     ... 
    end 
    ... 

    def booking_params 
     params.require(:booking).permit(:arrived_at, :departured_at, :arrival_address, 
       :departure_address, :arrival_city, :departure_city, 
       :reservation_cost, :total_additional_cost, :user_attributes, :user_id, :garage_id, 
       user_attributes: [:id, :name, :surname, :email, :phone], 
       garage_attributes: [:id] 
             ) 
    end 
=========================== 

     Booking: 
     belongs_to :user 
     accepts_nested_attributes_for :user 
=========================== 

    ##In model User: 
     has_many :bookings 

그러나 동일한 파라메타가있는 irb 콘솔의 @booking.user.save & @booking.save은 성공적으로 저장 가능하며 true가 전달됩니다. 금지 된 속성 오류이 없습니다.

이 금지 된 속성의 출처는 어디입니까? 나는 폼에서 보내는 모든 attrs를 허용하고, accepts_nested_attributes_for를 올바르게 사용한다고 생각한다. 그렇지 않습니까?

답변

1

바로 아래에 따라 컨트롤러 private 메소드 내부 사용자의 user_attributes을 정의

private 
    def user_params 
    params.require(
     :user 
    ).permit(
     :first_name, 
     :last_name, 
     :job_title 
    ) 

    end 

이 아래처럼 속성 안에 만 중첩 된 속성을 추가 제출 중첩되어 작업하는 경우 :

private 
     def user_params 
     params.require(
      :user 
     ).permit(
      :first_name, 
      :last_name, 
      :job_title, 
      addresses_attributes: [:address_1, :address_2] 
     ) 

     end 

중첩 된 속성 쓰기 귀하의 모델 연결을 염두에 두어, 희망이 당신을 위해 작동합니다. :)

+0

답해 주셔서 감사합니다. 그러나 이미 그렇게되었습니다. 그러나 놀랍게도 작동하지 않기 때문에, 나는 놀랐다. –

+0

당신은 프로젝트의 레일즈 버전을 써주시겠습니까? 당신은 컨트롤러의 새로운 액션 안에서 사용자 객체를 만들고 있습니까? –

+0

은이 링크를 참조합니다. http://stackoverflow.com/questions/22990103/activemodelforbiddenattributeserror-using-update-attributes-having-created-par –