当用户在网站内完成各种操作时,我尝试使用ActionMailer触发电子邮件,例如创建新状态。
当我尝试在Statuses控制器的create方法中调用邮件程序时,我得到一个NoMethodError:
未定义的方法'email'代表nil: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 => "myemail@gmail.com"
def status_confirmation(user)
mail(:to => user.email, :subject => "Status Posted")
end
end
答案 0 :(得分:0)
您传入的是空用户(@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
,还是忘了初始化(或忘记一些代码)?