0

我不知道什么是应对3级深,嵌套形式对控制器更深3深嵌套形式

一个例子,最好的办法:

店控制器

def new 
    @user = current_user 
    @shop = @user.build_shop 
    @type = @shop.build_type 
end 

def create 
    @user = current_user 
    @shop = @user.build_shop(params[:shop]) 
    @type = shop.build_type(params[:type]) 
    if @shop.save  
    flash.now[:success] = "blah" 
    render :show 
    else 
    render :new 
    end 
end  

回答

2

如果accept_nested_attributes_for变得难以实现,那么您的构建方法实际上是您唯一的选择,而无需对代码进行更深层次的重构。

1

我建议你阅读ActiveRecord的accepts_nested_attributes_for方法。它将在大多数情况下消除您所有的build_...(...)方法的需求,并且使用嵌套表单精美地运行。

+0

在这里同意Deefour,但Rails世界充满了关于做超过两层深的嵌套属性的警告。在你走得太远之前,建议你在Rails上深入嵌套的模型中进行大量搜索。 – 2012-02-23 07:32:20

+0

是的,我同意你的观点,但有时你必须抛弃那些不起作用的优秀方案。 – dcalixto 2012-02-23 08:31:26