2016-12-15 2 views
0

양식을 제출할 때마다 undefined method `each' for nil:NilClass 오류가 발생합니다. 모든 것이 정확하다면 아무런 문제없이 양식을 제출할 수 있습니다. 그러나 한 가지 빠져있는 것이 있으면 오류가납니다. 이 오류는이 라인에 저를 보냅니다Ruby on rails - 정의되지 않은 메소드`each 'for nil : NilClass

보기/사용자/new.html.haml

- @subscriptions.each do |fbs| 
    = fb.radio_button :subscription_id, fbs.id, class: 'radiobtn', required: true 

컨트롤러/users_controller.rb

def new 
    @user = Users::Business.new 
    @subscriptions = Businesses::Subscription.all 
end 

def create 
    @user = Users::Business.new(user_params) 

    if @user.save 
    sign_in(@user) 
    else 
    render :new 
    end 
end 
+0

폼을 제출하면 컨트롤러의'create' 액션이 호출됩니다. 어떻게 보이나요? 나는 당신이'render '를'''''@ subscriptions'을 설정하지 않았다고 생각합니다. – Stefan

+0

레일 콘솔에서 TopLevel 상수에 대한 일부 권장되지 않는 경고가 있었습니까? 그렇다면 @subscriptions = :: Businesses :: Subscription.all을 사용해보십시오 – cubbiu

+0

편집 해 주셔서 감사합니다. 마찬가지로 나는 의심 스럽다 : 당신은'create' 내에서'new' 템플릿을 렌더링하지만 템플리트에서 요구하는대로'@ subscriptions'를 설정하지 않습니다. – Stefan

답변

2

를 할당 구독 :

before_filter :set_subscriptions, only: %w(new create) #for edit and update if needed 

private 
def set_subscriptions 
    @subscriptions = Businesses::Subscription.all 
end 

또는 저장이 실패하고 new 양식을 다시 렌더링 후 @subscriptions = Businesses::Subscription.all 직접 create에 조치를 추가 할 수 있습니다.

0

값과 함께 지속하지가 있기 때문에 그것은 일어나고있다 그 모델. 당신은 같은 rails console

$rails console 
> Businesses::Subscription.count 

의 데이터를 확인하실 수 있습니다 그리고 당신은 데이터가없는 것을 보면 당신이 null 값을 확인하고 처리 할 수있는 if ... end 블록을 작성할 수 있습니다. 너무 만들 행동

+0

'Businesses :: Subscription.all'은'nil'을 반환하지 않습니다. – Stefan

+0

오류 로그를 보내 주실 수 있습니까? –

+0

스테판과 동의합니다. 빈 관계를 반환하며 nil은 반환하지 않습니다. – cubbiu

관련 문제