2016-10-23 4 views
0

私はChocolateControllerに呼び出ししようとしています:なぜRailsは関連付けを使って `nil`を返すのですか?

@chocolate.kinds.new(name: "Bitter") 

class ChocolateController < ApplicationController 
    def new 
    @chocolate = Chocolate.new 
    end 

と私は私のモデルを持っている:

class Chocolate < ActiveRecord::Base 
    has_many :kinds 

class Kind < ActiveRecord::Base 
    belongs_to :chocolate 

私は次のエラーを取得:

undefined method `new' for nil:NilClass 

誰でも助けてください、なぜこのエラーが出るのですか?より多くのコードが必要な場合は、それを提供することができます。コメントで私に尋ねてください

+0

'routes.rb'ファイルはどのように見えますか? – Mark

+0

@Mark 'resources:チョコレートのみ:[:new::edit::update::create]' – Doe

+0

あなたのKindモデルに 'belongs_to:chocolate'があるとしますか? – David

答えて

0

あなたができることは、このようなものです。

@chocolate.kinds.build(name: "Bitter") 

問題は、あなたが新しいのを呼び出すためにバックKindモデルを得ていないので、@chocolateがレコードを持っていない種類nilを@chocolate.kindsがあるということです。たとえそれがKindsレコードを持っていたとしても、Kindsモデルではなく、コレクションで新しいレコードを呼び出すことになります。

+0

というテーブルを持っていますが、私は正しい方法でそれをやりたいのです。そうではありません。どうしようもありません。 – Doe

+0

私はそれを試してみました –

+0

奇妙ですが、今は 'NoMethodError:未定義のメソッド' types 'for nil:NilClas' – Doe

関連する問題