Rails ActionMailer 用户邮件发送器 无方法

问题描述 投票:0回答:1

我不能让我的user_mailer工作。它说没有方法,我找不到原因。

从Rails中:

NoMethodError in AtendimentosController#create
undefined method `welcome_email' for UserMailer:Module

从Rails C(手动测试):

irb(main):027:0> ActionMailer::usermailer.send_welcome_email(from: "[email protected]", to: '[email protected]', subject: 'subjecto de teste', body: "Test")
Traceback (most recent call last):
        2: from (irb):27
        1: from (irb):27:in `rescue in irb_binding'
NoMethodError (undefined method `usermailer' for ActionMailer:Module)

class UserMailer位于mailersuser_maileruser_mailer.rb。

class UserMailer < ApplicationMailer
  def welcome_email(user)
    mail(:to => @user.email, :subject => "Welcome!")
  end
end

我在控制器处调用。

  def send_mail
    UserMailer.welcome_email(self).deliver_later
  end     
ruby-on-rails-5 actionmailer
1个回答
0
投票

你应该把这个类移到 /mailers/user_mailer.rb. 当你把文件放在一个单独的文件夹中时,要求文件的开头必须是------。Module ModuleName. 所以在你的例子中,当你把这个文件放在 /mailers/user_mailer/user_mailer.rb 它应该是这样的。

module UserMailer
  class UserMailer < ApplicationMailer
    def welcome_email(user)
      mail(:to => @user.email, :subject => "Welcome!")
    end
  end
end

然后你把它叫做: UserMailer::UserMailer.welcome_email(self).deliver

© www.soinside.com 2019 - 2024. All rights reserved.