Ruby on Rails: 未初始化常量 UserController::ReportUserMailer
Ruby on Rails: uninitialized constant UserController::ReportUserMailer
我有以下方法是 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 发出 post 请求时。我收到以下错误。
NameError (uninitialized constant UserController::ReportUserMailer):
邮件文件名和class名称不同,但我无法修改文件名或邮件代码。
我在这里错过了什么?
编辑:
我无法修改代码,因为它已被用作 API。
我需要一个解决方法来调用 mailer class 而不更改文件名。
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
我有以下方法是 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 发出 post 请求时。我收到以下错误。
NameError (uninitialized constant UserController::ReportUserMailer):
邮件文件名和class名称不同,但我无法修改文件名或邮件代码。
我在这里错过了什么?
编辑:
我无法修改代码,因为它已被用作 API。 我需要一个解决方法来调用 mailer class 而不更改文件名。
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