我有以下方法是 UserController
def report_user
current_user = User.find_by(id: params[:id])
unless current_user.nil?
ReportUserMailer.report_user_email(user, params).deliver_now
end
respond_to do |format|
format.js
end
end
在 mailers / report_mailer.rb 中。我有以下代码。
class ReportUserMailer < ApplicationMailer
layout "layouts/mailer"
def report_user_email(currentUser, params)
@user = currentUser
@first_name = params[:first_name]
@last_name = params[:last_name]
@email = params[:current_user_email]
@report_user_first_name = params[:report_user_first_name]
@report_user_id = params[:report_user_id]
@message = params[:message]
if Rails.env.production?
mail(to: "something@email.com", subject: "User Report")
else
mail(to: "something@email.com", subject: "User Report ")
end
end
end
当我向UserConroller发布帖子请求时。我收到了以下错误。
NameError(未初始化的常量UserController :: ReportUserMailer):
Mailer文件名和类名不同,但我无法修改文件名或邮件代码。
我在这里缺少什么?
修改
我无法修改代码,因为它已被用作API。 我需要一个解决方法来调用邮件程序类而不更改文件名。
答案 0 :(得分:1)
Rails希望将文件命名为report_user_mailer.rb
。如果你不能修改文件名(为什么?),你需要手动require
文件mailers/app/report_mailer.rb
,如下所示:
class SomeClass < ActiveRecord
require "#{RAILS_ROOT}/mailers/report_mailer.rb"
#your code that uses the ReportUserMailer class
end