2013-01-03 44 views
0

我試圖在用戶完成網站內的各種操作(例如創建新狀態)時用ActionMailer觸發電子郵件。爲什麼我的ActionMailer中會出現NoMethodError?

當我嘗試調用的狀態控制器的創建方法的郵件,我得到一個NoMethodError:用於無

未定義的方法「電子郵件」:NilClass

誰能幫我找出是什麼錯誤?

這裏是我的代碼從狀態控制器內:

def create 
    @status = current_user.statuses.new(params[:status]) 

    respond_to do |format| 
    if @status.save 
     UserMailer.status_confirmation(@user).deliver 
     format.html { redirect_to @status, notice: 'Status was successfully created.' } 
     format.json { render json: @status, status: :created, location: @status } 
    else 
     format.html { render action: "new" } 
     format.json { render json: @status.errors, status: :unprocessable_entity } 
    end 
    end 
end 

這裏是我的UserMailer代碼:

class UserMailer < ActionMailer::Base 

    default :from => "[email protected]" 

    def status_confirmation(user) 
    mail(:to => user.email, :subject => "Status Posted") 
    end 
end 

回答

0

你傳遞一個NULL用戶(@user):

def create 
    @status = current_user.statuses.new(params[:status]) 
    respond_to do |format| 
    if @status.save 
     # There's no @user here, unless it's initialized in a filter, etc. 
     UserMailer.status_confirmation(@user).deliver 

你的意思是current_user,或者你忘記初始化它(或忘記s代碼)?

+0

戴夫,我的意思是current_user。這就像一個魅力。謝謝! –

相關問題