如何使用Rails 4.1预览可安装引擎内定义的电子邮件

时间:2014-09-05 07:59:44

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

我们在引擎内部设置SomeMailer。生成邮件程序后,Rails会创建一个SomeMailerPreview类,其注释为:

# Preview this email at http://localhost:3000/rails/mailers/some_mailer/test

但是,一旦我在引擎中运行Dummy应用,该网址就无法解析。

引擎安装在根路径'/'上:

mount MyEngine::Engine => "/"

我尝试过将url与引擎名称的不同组合,但不解决。

是否可以为引擎内的邮件程序使用预览功能?

2 个答案:

答案 0 :(得分:5)

有点晚了,但我想我还是会回答的。您可以通过让铁路知道预览路径的位置来识别您的预览。默认情况下,它会查找

"#{Rails.root}/test/mailers"

所以你的邮件预览必须在那里才能正确解析网址。但您可以通过在Dummy

的development.rb文件中设置路径来更改此设置
config.action_mailer.preview_path = "#{YourEngineRoot}/test/mailers"

将预览放在给定的路径中。您的网址应在此之后正确解析。

答案 1 :(得分:1)

我有同样的问题。幸运的是,在我的情况下,我的引擎直接依赖于主应用程序。在主应用程序中,即使邮件是在我的引擎中,我也有我的邮件预览。

  class ApplicantMailerPreview < ActionMailer::Preview
    # Accessible from http://localhost:3000/rails/mailers/applicant_mailer/applicant_email
    def applicant_email
      recipient = MyEngine::ApplicantEmail.all.first
      applicant = recipient.applicant
      job = applicant.job

      MyEngine::ApplicantMailer.applicant_email(job.id, applicant.id, recipient.id)
    end
  end