2011-08-30 2 views
0

enter image description here레일 3 - 구문 오류 - 객체의 액세스 멤버

내 애플은 Kijiji의 이메일 응답 시스템 같은 것입니다. 각 글에 대해 사용자가 글에 답글을 쓸 수 있습니다. 제출할 때이 오류가 발생합니다.

Undefined method `contact_email' for nil:NilClass 

나는 **

def create 
    @emailinterest = Emailinterest.new(params[:emailinterest]) 

    respond_to do |format| 
     if @emailinterest.save 
      **Notifier.emailinterest_notification(self, @submission).deliver** 
      format.html { redirect_to(@emailinterest, :notice => 'Email was successfully sent!') } 
      format.xml { render :xml => @emailinterest, :status => :created, :location => @emailinterest } 
     else 
      format.html { render :action => "new" } 
      format.xml { render :xml => @emailinterest.errors, :status => :unprocessable_entity } 
     end 
    end 
end 

emailinterests_controller.rb "자기"이메일로 전송되고있는 emailinterest 개체를 참조하여 아래 오류의 원인이되는 선을 표시. @ 제출은 emailinterest 객체가 상호 작용하는 현재 객체를 참조해야합니다. \ 레일 \ actuirl5 \ 응용 프로그램 \ 컨트롤러 \ emailinterests_controller.rb

def create 
    @emailinterest = Emailinterest.new(params[:emailinterest]) 
    @submission = Submission.find(params[:submission_id]) 

    respond_to do |format| 
     if @emailinterest.save 
      Notifier.emailinterest_notification(@emailinterest, @submission).deliver 
      format.html { redirect_to(@emailinterest, :notice => 'Email was successfully sent!') } 
      format.xml { render :xml => @emailinterest, :status => :created, :location => @emailinterest } 
     else 
      format.html { render :action => "new" } 
      format.xml { render :xml => @emailinterest.errors, :status => :unprocessable_entity } 
     end 
    end 
end 

C : \ 레일

C FIX

**def emailinterest_notification(emailinterest, submission)** 
    @emailinterest = emailinterest 
    @submission = submission 
     **mail :to => submission.contact_email,** 
     :from => emailinterest.sender_email, 
     :subject => 'actuirl.com - RE:' + submission.title 
end 

notifier.rb \ actuirl5 \ app \ views \ submissions_form_new_emailintere st.html.erb

<%= form_for(emailinterest) do |f| %> 
    <%= hidden_field_tag :submission_id, value = @submission.id %> 
    <div class="field"> 
     <%= f.label :sender_email %><br /> 
     <%= f.text_field :sender_email %> 
    </div> 
    <div class="field"> 
     <%= f.label :sender_email_content %><br /> 
     <%= f.text_area :sender_email_content %> 
    </div> 
    <div class="actions"> 
     <%= f.submit %> 
    </div> 
<% end %> 

C : \ 레일 \ actuirl5 \ 응용 프로그램 제출 \ show.html.erb \ 전망 \

<%= render :partial=>"form_new_emailinterest", :locals=>{:emailinterest=>Emailinterest.new} %> 

답변

3

나는 당신에 @submission을 정의 보지 않았다 어딘가에. 그래서 그것은 정확한 오류 인 null입니다. 확인 @submission를 해결하기 위해 작성되었습니다 경우

행운을 빕니다 :-)

+0

어떻게 정의해야합니까? '@submission = Submission.find (params [: id])' 나는 이것을 추가하기로 결정했으며이 오류가 발생했습니다. _ ID 번호가 –

+0

이 아닌 제출물을 찾지 못했습니다. 먼저 테스트를 위해 @submission = Submission.first를 시도해보십시오. params [: id]가 제공되지 않거나 해당 ID를 찾을 수없는 경우 작동합니다. 디버그하거나 개발 로그에서 확인할 수 있습니다. – Jirapong

3

나는 문제는 당신이

**Notifier.emailinterest_notification(self, @submission).deliver** 

대신

"자기"를 참조하는지 생각 컨트롤러가 될 것이지만 나는 당신이 @emailinterest를 원한다고 생각한다.

+0

예 ... 제출 항목도 있습니다. :) – flooooo

관련 문제