繁体   English   中英

为什么我的ActionMailer中出现NoMethodError?

[英]Why do I get a NoMethodError in my ActionMailer?

当用户完成网站内的各种操作(例如创建新状态)时,我尝试使用ActionMailer触发电子邮件。

当我尝试在Statuses控制器的create方法中调用邮件程序时,出现NoMethodError:

nil:NilClass的未定义方法'email'

谁能帮助我找出问题所在?

这是我在状态控制器中的代码:

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 => "myemail@gmail.com"

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

您要传递一个空用户( @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 ,还是忘记初始化它(或忘记一些代码)?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM