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

and*_*ndy 5 actionmailer rails-engines ruby-on-rails-4

我们SomeMailer在引擎内部设置了.生成邮件程序后,Rails会创建一个SomeMailerPreview类,并带有注释:

# Preview this email at http://localhost:3000/rails/mailers/some_mailer/test
Run Code Online (Sandbox Code Playgroud)

但是,一旦我Dummy在我的引擎中运行应用程序,该URL就无法解析.

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

mount MyEngine::Engine => "/"
Run Code Online (Sandbox Code Playgroud)

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

是否可以在引擎内使用预览功能?

小智 5

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

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

所以你的邮件预览必须在那里为网址正确解决.但您可以通过在Dummy的development.rb文件中自己设置路径来更改此设置

config.action_mailer.preview_path = "#{YourEngineRoot}/test/mailers"
Run Code Online (Sandbox Code Playgroud)

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


kob*_*ltz 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
Run Code Online (Sandbox Code Playgroud)