2015-07-01 3 views
0

У меня есть разрешение проблемы о двойном вложенном fields_for на rals 4. Примера отношения:вложенный fields_for Rails 4

Service - > has_many :product_services 
    accepts_nested_attributes_for :product_services, allow_destroy: true 
    Product Service -> has_many :foto_product_services 
    accepts_nested_attributes_for :foto_product_services, allow_destroy: true 

Сервис -> new.html.slim

= form_for @service, :html => {:multipart => true} do |f| 
    = f.fields_for :product_services do |builder| 
    = render 'field_product', f: builder 
= f.submit 

Сервис -> _field_product.html .slim

= f.text_field :price, :class => 'text_field input-lg width-100' 
= f.fields_for :foto_product_services do |builder| 
    = builder.file_field "avatar[]", type: :file, multiple: true 

Разрешение Params в моем контроллере службы

def service_params 
    params.require(:service).permit(:service_category_id, :title, :description, :product_services_attributes => [:title, "_destroy"], :foto_product_services_attributes => [:avatar]) 
end 

Когда я нажимаю кнопку «Отправить» после выбранного продукта, я получаю ошибку, не указанную параметром: foto_product_services_attributes.

ответ

1

У вас есть глубокие вложенные атрибуты, поэтому foto_product_services_attributes должен быть внутри product_services_attributes:

params.require(:service).permit(:service_category_id, :title, :description, :product_services_attributes => [:title, "_destroy", :foto_product_services_attributes => [:avatar]]) 
Смежные вопросы