2017-03-08 6 views
0

このWebアプリケーションプロジェクトの私の目標の1つは、各テーラで製品を追加または作成することです。そこでMCV構造を最初から作成し、テーラーのサインアップページを作成しました。そして、製品を基本骨格CRUDは、テーラーによって使用されるので、私は製品を作成するために足場を足場にします。そして、私はそれらをhas_many/belongs_to関係に入れます。私は、tailor_idという列をProductクラスに追加する移行を生成しました。その後、私はこれらのネストされたルートを置く:その後、私は/テーラーを使用することにしました Ruby on Rails:親のIDを使用して新しい子インスタンスを作成する/関連付けられたクラスを使って作業する

resources :tailors do resources :products end resources :products #this is for debugging for whether a customer can see all the Products created by all the Tailors 

が、私はすくいルートを走ったと私は与えられたtailor_idで製品を作成するために使用できるパス確認/:tailor_id/products/new
だから、私はテーラーショーページにリンクするコードを追加しました:

<%= link_to 'Add Product', new_tailor_product_path(@tailor.id) %> 

をし、私はこのようなパスが向けられているので、products_controller)に新しい作成の機能を編集しました:

def new 
    @tailor = Tailor.find(params[:tailor_id]) 
    @product = @tailor.Product.new(params[@tailor]) 
    end 

    def create 
    @tailor = Tailor.find(params[:tailor_id]) 
    @product = @tailor.Product.new() 
    @product.product_name = params[:product][:product_name] 
    @product.product_description = params[:product][:product_description] 
    @product.price = params[:product][:price] 
    @product.tailor_id = params[:product][@tailor] 
    @product.save 
    redirect_to "/tailors/#{@tailor}" 
    end 

が、エラーが言う@product = @tailor.Product.new(params[@tailor])

あるに発生し 未定義のメソッド「製品」

私はクラスが正しいと確信しているので、なぜこれがエラーであるのか分かりません(クラスは大文字で始まり、単数でなければならないことが教えられています)。メソッドを呼び出す

親クラスとそのデータを呼び出すという概念を説明してください。 クラスとそのデータをこの場合はproduct_controllerに書き込むことはできませんか?私のアプローチは間違っているのですか、正しい方向に私はいますか?

はまた、私のコードの他の部分について、他の備考及び誤謬の訂正が

+0

について読むことができますか? – lcguida

+0

@Icguidaあなたは** tailor.rbの内容について尋ねている場合**、それはこのように、OS:私はproducts' 'end' : 'クラスの仕立て屋

答えて

0

を歓迎している問題はここにある:@tailor.ProductProductはクラス名であり、関連名ではありません。

は、has_manyassociation guideを読むことをお勧めします。

しかし、あなたはTailorProducthas_many関連を持っていると仮定すると、あなたはこのような何かをやっている必要があります。

def new 
    @tailor = Tailor.find(params[:tailor_id]) 
    @product = @tailor.products.build 
end 

def create 
    @tailor = Tailor.find(params[:tailor_id]) 
    @product = @tailor.products.create(params[:product]) # Take a look at strong parameters 
    @product.save 
end 

あなたは組合法あなたのテーラーモデルがどのようにhere

+0

@Icguiida tnx。私はこれらの方法について後で勉強します。 –

関連する問題