【问题标题】:ActionMailer outside RailsRails 外的 ActionMailer
【发布时间】:2018-10-20 03:19:50
【问题描述】:

我正在尝试使用 Rails 外部的 ActionMailer 发送电子邮件,但遇到了 Missing template 错误。 我有这样的文件夹结构。

mailer/app/mailers/welcome_email.rb
mailer/app/views/welcome_email/welcome.html.erb
mailer/mailer.rb

我有一个配置文件,其中有这一行:

mailer/initializers/config.rb

ActionMailer::Base.view_paths = File.expand_path('../../app/views/', __FILE__)

(我不明白为什么我需要添加这个额外的'../',老实说,因为路径是'一个文件夹'然后'/app/views'。如果我不这样做它会找到'/initializers/app/views/')。

File.expand_path('../../app/views/', __FILE__)

返回"/home/jedrek/workspace/rubysamples/mailer/app/views",这看起来不错。然后 ActionMailer 应该在那里找到 welcome_email/welcome.html.erb 模板,但是当我运行 mailer.rb 时出现错误

Missing template welcome_email/welcome
Searched in: (ActionView::MissingTemplate)
  * "/home/jedrek/workspace/rubysamples/mailer/app/views"

为什么在/app/views/welcome_email/welcome.html.erb 中找不到文件? 我做错了什么?

【问题讨论】:

  • 您的邮件名称是 MyMailer 吗?然后你应该在views文件夹中有一个名为my_mailer的文件夹,里面有一个名为welcome.html.erb的文件
  • @SaqibShahzad 抱歉,我的 Mailer 是 WelcomeEmail,我的错。
  • 什么是mailer/mailer.rb
  • 在这个文件中,我只需要 'welcome_email' 并将其命名为 WelcomeEmail.welcome.deliver_now
  • 您需要额外的“../”,因为您需要一个删除文件名,另一个删除当前目录。你也可以File.expand_path('../app/views/', __dir__)

标签: ruby actionmailer


【解决方案1】:

将视图文件夹中的welcome_email 目录重命名为welcome_email_mailer,它应该可以工作

【讨论】:

  • 你知道吗?我很愚蠢:P 我在实际的邮件程序中有format.html,但我没有文件welcome.txt.erb 这可以解释为什么它说Missing template welcome_email/welcome with {:locale=>[:en], :formats=>[:text], ...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-23
  • 1970-01-01
  • 1970-01-01
  • 2011-06-24
  • 1970-01-01
  • 2012-06-18
相关资源
最近更新 更多