Ruby on Rails:未初始化的常量UserController :: ReportUserMailer

时间:2018-02-20 12:53:48

标签: ruby ruby-on-rails-5 actionmailer

我有以下方法是 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。 我需要一个解决方法来调用邮件程序类而不更改文件名。

1 个答案:

答案 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