我正在开发一个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”
答案 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