我对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个空格。
自我注意-总是先检查缩进!!