Проблема с сохранением трехуровневой вложенной формы в rails

#ruby-on-rails-3 #nested-forms

#ruby-on-rails-3 #вложенные формы

Вопрос:

У меня есть трехуровневая вложенная форма, но третий класс не сохранен.

У меня есть три класса моделей (упрощенных)

 class A

    has_one :b
    accepts_nested_attributes_for :b

end
  

и

 class B

    belongs_to :a

    has_many :c
    accepts_nested_attributes_for :c

end
  

и

 class C

    belongs_to :b

end
  

Мой взгляд (упрощенный)

 <%= form_for [@a] do |f| -%>
    <%= f.fields_for :b do |b_form| -%>
        <%= b_form.fields_for :c do |c_form| -%>
        <% end %>
    <% end %>
<% end %>
  

Контроллер

 def new
    @a= A.new
    b = @a.b = B.new
    b.c.build
end

def create
    if (@a= A.create(params[:a])).valid?
        //flash succes
    end
end
  

Хэш выглядит следующим образом:
{"a"=>{"title"=>"test", "body"=>"<p>test</p>rn<br />", "b_attributes"=>{"title"=>"testt", "c_attributes"=>{"0"=>{"title"=>"testtt"}}}}}

Но создаются только A и B. C — это не так, он не выдает ошибку или что-то в моих журналах..

Спасибо!

Редактировать:

Решение (благодаря Zabba)

добавить attr_accessible :c_attributes в class B

Комментарии:

1. Попробуйте добавить attr_accessible :c_attributes в class B .

2. какие-либо проверки в C и attr_* в B?

Ответ №1:

Попробуйте добавить attr_accessible :c_attributes в class B

(должно быть включено в ответ)

Ответ №2:

Контроллер

 def new
    @a= A.new
    b= @a.b.build
    b.c.build
end
def create
   @a = A.new(params[:a])
   if @a.valid?
    //flash succes
   end
end