2016-10-23 2 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 : chocolates, only : [: new, : edit, : update, : create]' – Doe

+0

당신의 Kind 모델에'belongs_to : chocolate'이 있다고 가정하고 있습니까? – David

답변

0

당신이 할 수있는 일은 이와 같습니다.

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

문제는 당신이 새로운 전화를 다시 Kind 모델을받지 않도록 @chocolate이 가지고 가지 기록하지 않습니다 전무 @chocolate.kinds는 것입니다. 그것이 Kinds 레코드가 아니더라도 Kinds 모델이 아닌 컬렉션에서 new를 호출 할 것입니다.

+0

인데이 테이블은 올바른 방법으로하고 싶습니다. 그렇게하지 마라. 어떻게 노력하고 있나처럼 – Doe

+0

업데이트했습니다. 시도해 보았습니다. –

+0

이상한데, 이제는 그것이 NoMethodError : nil에 대해 정의되지 않은 메소드'kinds '를줍니다 : NilClas' – Doe

관련 문제