1

Я испытываю проблемы при сохранении simple_form.fields_for - запрещено атрибуты ошибкиRails 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 

Однако @booking.user.save & @booking.save в консоли irb с теми же параметрами успешно сохраняются и передается значение true, без Ошибка запрещенного атрибута.

Откуда этот атрибут Forbidden? Я уверен, что разрешил все attrs, которые я отправляю в форме, и я думаю, что я правильно использую accepts_nested_attributes_for, не так ли?

ответ

1

Просто Определите 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 –

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