Ruby on rails ActionMailer不工作

Ruby on rails ActionMailer不工作,ruby-on-rails,actionmailer,Ruby On Rails,Actionmailer,因此,我试图为我的网站制作一个邮件程序,在创建订单时向所有用户发送一封电子邮件。我不确定该怎么做,所以我一直在尝试很多不同的事情。目前,我搞砸了,我甚至无法启动我的应用程序。(不太好。) 这是我的错误消息:/Users/Brawain/rails\u projects/sample\u app/config/initializers/setup\u mail.rb:12:in`':未初始化的常量开发邮件拦截器(NameError) 目前,我的邮件是这样的: 订单控制员 class OrdersC

因此,我试图为我的网站制作一个邮件程序,在创建订单时向所有用户发送一封电子邮件。我不确定该怎么做,所以我一直在尝试很多不同的事情。目前,我搞砸了,我甚至无法启动我的应用程序。(不太好。)

这是我的错误消息:/Users/Brawain/rails\u projects/sample\u app/config/initializers/setup\u mail.rb:12:in`':未初始化的常量开发邮件拦截器(NameError)

目前,我的邮件是这样的:

订单控制员

class OrdersController < ApplicationController
def new

  def create
    @order = Order.new(user_params)
    if @order.save
        UserMailer.work_order(@user).deliver
    else
      render 'new'
    end
  end

end
end
用户\u mailer视图中的文件work\u order.text.rb中只有文本

在initializers文件夹的config文件夹中,我有一个名为setup_mail.rb的文件

ActionMailer::Base.smtp_settings = {
  :address              => "smtp.gmail.com",
  :port                 => 587,
  :domain               => "student.andover.edu",
  :user_name            => "techmasterswork",
  :password             => "happycrazy",
  :authentication       => "plain",
  :enable_starttls_auto => true
}

ActionMailer::Base.default_url_options[:host] = "localhost:3000"
Mail.register_interceptor(DevelopmentMailInterceptor) if Rails.env.development?
然后在app下,我有一个名为mailers的文件夹,其中有文件user_mailer.rb

class UserMailer < ActionMailer::Base
default from: "techmasterswork@gmail.com"

def work_order(user)
  @user = user
  mail to: user.email, subject: "Work Order Form"
end
end
class UserMailer

我暗自怀疑它最终应该是order_mailer.rb,但我不确定。无论如何,我知道这需要很多帮助。如何解决此问题?

发生此错误是因为该类未加载到rails环境中(可能不是标准加载路径的一部分)。如果您转到rails控制台,只需键入类名
DevelopmentMailInterceptor
,就会得到相同的错误。您可以尝试在
设置\u mail.rb
中要求该文件


但是,你真的应该重新考虑一下你的方法。一种更标准(更简单)的方法是,在您的
Order
类创建回调后,在
上触发电子邮件。只需调用
UserMailer.work\u order(user)。在回调中传递

您可以尝试将DevelopmentMailInterceptor类作为development\u mail\u interceptor.rb放入lib目录中,然后在setup\u mail.rb文件中,包括
要求“development\u mail\u interceptor”

尝试将
DevelopmentMailInterceptor
放入
配置/初始值设定项中
非常感谢!就是这样!
class UserMailer < ActionMailer::Base
default from: "techmasterswork@gmail.com"

def work_order(user)
  @user = user
  mail to: user.email, subject: "Work Order Form"
end
end