我正在尝试在我的应用程序中设置邮件程序(第一次),以便在回答用户问题时通过电子邮件通知他们。
我的问题是我无法让控制器正常工作。
我的路线看起来像这样:
resources :questions do
resources :answers
end
在我的answers_controller中我有这个:
def create
@answer = Answer.new(answer_params)
@question = Question.find(params[:question_id])
if @answer.save
UserMailer.question_answer(@user).deliver
end
end
在user_mailer.rb文件中我有:
def question_answer(user)
@answer = Answer.new
@question = @answer.question
mail(:to => @question.user.email, :subject => "Your question was answered!")
end
然而,在发布答案时,我收到此错误:
undefined method `user' for nil:NilClass
答案 0 :(得分:2)
您需要在参数中传递@answer,
UserMailer.question_answer(@answer, @user).deliver
你会从@answer得到问题。在mailer.rb中
def question_answer(answer, user)
@answer = answer
@question = @answer.question
@user = user
mail(:to => @question.user.email, :subject => "Your question was answered!")
end
现在,您将通过电子邮件传递每个参数。在你的问题中,我发现你只是传递了用户并且让那个用户有问题,但你会有一个空白的@question,所以该问题的用户将是空白的。这就是为什么你得到零级错误。
希望得到这个帮助。