在rails中保存三级嵌套表单的问题

时间:2011-05-06 15:22:10

标签: ruby-on-rails-3 nested-forms

我有一个三级嵌套表单,但第三个类没有保存。

我有三个模型类(简化)

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

2 个答案:

答案 0 :(得分:2)

尝试在attr_accessible :c_attributes

中添加class B

(应该回答)

答案 1 :(得分:0)

控制器

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