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

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

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

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>\r\n<br />", "b_attributes"=>{"title"=>"testt", "c_attributes"=>{"0"=>{"title"=>"testtt"}}}}}

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

Спасибо!

Изменить:

Решение (спасибо Zabba)

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


person Leonard Punt    schedule 06.05.2011    source источник
comment
Попробуйте добавить attr_accessible :c_attributes в class B.   -  person Zabba    schedule 06.05.2011
comment
какие-либо проверки в C и attr_* в B?   -  person fl00r    schedule 06.05.2011


Ответы (2)


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

(должен превратиться в ответ)

person Zabba    schedule 06.05.2011

Контроллер

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
person Dinatih    schedule 06.05.2011