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