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

accepts_nested_attributes_forが扱いにくくなった場合、ビルドメソッドは本当にあなたのコードのより深いリファクタを実行することなく、唯一の他のオプションです。

1

ActiveRecordのaccepts_nested_attributes_forメソッドをお読みになることをお勧めします。ほとんどの場合、すべてのbuild_...(...)メソッドが不要になり、ネストされたフォームでうまく機能します。

+0

ここではDeefourと合意していますが、Railsの世界には2つ以上のレベルのネストされた属性についての警告がいっぱいです。あなたがあまりにも遠くに行く前に、Railsの深くネストされたモデルでグーグルグーグルを行うことをお勧めします。 –

+0

ええ、私はあなたの人に同意しますが、時には、動作するソリューションにはうまくいかないエレガシーを除外しなければならない場合もあります。 – dcalixto

関連する問題