ActionMailer类没有在Rails App中继承

时间:2018-02-09 15:14:42

标签: ruby-on-rails ruby-on-rails-4

我正在开发一个Ruby on Rails 4.2.10应用程序,没有项目结构的视图。它是微服务架构中的后端逻辑。

我在这里遇到的问题是ActionMailer类没有被子类继承。

以前发过电子邮件。现在,这个相同的实现不起作用。 这与Rails版本有什么关系吗? 请帮忙。

application_mailer.rb

class ApplicationMailer < ActionMailer::Base
  default from: "from@example.com"
  layout 'mailer'
end

sample_mailer.rb

class SampleMailer < ApplicationMailer

    def  xlsx_email(email, xlsx, filename)
         mail.attachments[filename] = xlsx.read
         body = "The  report you requested is attached.\n\nThanks "
         mail(from: "noreply@sample.com", to: email, subject: "Report ", body: 
          body)
    end

end

我得到的错误是

  

NameError:SampleMailer的未定义局部变量或方法'mail':Class

当我尝试使用mail和attachment方法直接使用ActionMailer :: Base调用时,显示错误

  

ActionView :: MissingTemplate:使用“mailer”缺少模板sample_mailer / xlsx_email。搜索:*“sample_mailer”

2 个答案:

答案 0 :(得分:0)

如果您没有提供响应格式,那么您的代码将找到模板页面存在。 &#34;应用程序/视图/ sample_mailer / xlsx_email.html.erb&#34;

对于后一个问题,如果您不想渲染模板,可以尝试关注。

mail(from: "noreply@sample.com", to: email, subject: "Report ", body: 
      body) do |format|
    format.text { render plain: "Hello Mikel!" }
end

查看此链接了解更多信息。 https://apidock.com/rails/ActionMailer/Base/mail

答案 1 :(得分:0)

&:html 方法中使用 mail,如下所示。

class SampleMailer < ApplicationMailer

  def xlsx_email(email, xlsx, filename)
    mail.attachments[filename] = xlsx.read
    body = "The  report you requested is attached.\n\nThanks "
    mail(from: "noreply@sample.com", to: email, subject: "Report ", body: body, &:html)
  end
end