2016-07-08 3 views
0

Im интересует почему моя вложенная форма в RoR оленья кожа сохранить дочерние объекты :(fields_for не сохраняет объект грешат рельсы

На данный момент, это просто сохранить значение Parent (Printer) и делает ребенка (цвет) исчезают на втором визуализации (ошибка)! Что я делаю неправильно?

родитель модель

class Printer < ActiveRecord::Base 
belongs_to :user 
validates :user_id, presence: true 
validates :model, presence: true 

has_many :colors, dependent: :destroy 
accepts_nested_attributes_for :colors 
end 

детская модель

class Color < ActiveRecord::Base 
    belongs_to :printer 
    validates :color, presence: true 

end 

View (new.html.erb)

 <%= form_for @printer do |p|%> 

     <%= p.text_field :model %> 
     <%= p.fields_for :colors do |color|%> 
      <%= color.text_field :color%> 
     <% end %> 

     <%= p.submit "Add"%> 
    <% end %> 

И контроллер

def create 
@printer = current_user.printers.build(printer_params) 
if @printer.save 
    redirect_to @current_user 
else 
    render 'new' 
end 
end 

def new 
@printer = Printer.new 
@printer.colors.build 
end 

private 
def printer_params 
    params.require(:printer).permit(:model) 
end 

Edit: Это один помогает

private 
def printer_params 
    params.require(:printer).permit(:model, colors_attributes: [:color]) 
end 

ответ

1

При использовании вложенных форм, необходимо указать которые вложенные атрибуты должны быть в белом списке:

def printer_params 
    params.require(:printer).permit(:model, colors_attributes: [:color]) 
end 

Вы можете прочитать об этом в Rails Guides - Form Helpers - the controller section и на RoR API documentation - Strong Parameters

+0

Спасибо! Я знал, что что-то может быть неправильно с атрибутами, но не знал, как их перечислить. Это именно то, что я искал. –

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