Rails 4 ActionMailer抛出未定义的局部变量/方法



我对Rails相当陌生,这是我第一次创建邮件。我有一个包含姓名、角色和电子邮件(所有字符串)的用户模型。我有一个问题与我的应用程序,这是抛出一个错误;它说user是未定义的,尽管我认为我已经通过控制器传递了它。

我已经看了几篇文章,Rails指南,API Dock,我仍然不能弄清楚。任何帮助都将非常感激!!

user_mailer.rb

class UserMailer < ActionMailer::Base
  default from: "receipts@example.com"
  def receipt_email(user)
    @user = user
    @url  = 'http://example.com/login'
    mail(to: @user.email, subject: 'Thank you!')
  end
end

users_controller.rb:

class UsersController < ApplicationController
  load_and_authorize_resource :user, param_method: :user_params
  def update
    respond_to do |format|
      if @user.update(user_params)
        UserMailer.receipt_email(@user).deliver
        format.html { redirect_to users_path, notice: 'User was successfully updated.' }
        format.json { render :show, status: :ok, location: @user }
      else
        format.html { render :edit }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end
  end
  private
    def set_user
      @user = User.find(params[:id])
    end
    def user_params
      params.require(:user).permit(:role, :email)
    end
end

错误信息:

未定义UserMailer的局部变量或方法' user':Class

app/mailers/user_mailer.rb:3:in `<class:UserMailer>'
app/mailers/user_mailer.rb:1:in `<top (required)>'
app/controllers/users_controller.rb:19:in `block in update'
app/controllers/users_controller.rb:17:in `update'

所以我做了更多的测试,并从头开始重新输入整个东西-结果是我的缩进不像我的其他文件一样只有2个空格。

自我注意-总是先检查缩进!!

相关内容

最新更新