【问题标题】:How to use Rails 4.1 to preview e-mails defined inside a mountable engine如何使用 Rails 4.1 预览在可挂载引擎中定义的电子邮件
【发布时间】:2015-02-07 06:00:54
【问题描述】:

我们在引擎中设置了SomeMailer。生成邮件后,Rails 会创建一个 SomeMailerPreview 类,并带有以下注释:

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

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

引擎挂载在根路径'/':

mount MyEngine::Engine => "/"

我尝试了 url 与引擎名称的不同组合,但没有解决。

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

【问题讨论】:

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


    【解决方案1】:

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

    中查找

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

    因此您的邮件预览必须存在才能正确解析网址。但是你可以通过在 Dummy 的 development.rb 文件中自己设置路径来改变这一点

    config.action_mailer.preview_path = "#{YourEngineRoot}/test/mailers"
    

    并将您的预览放在给定的路径中。之后,您的 Url 应该会正确解析。

    【讨论】:

    • 感谢 bmac 会试试这个!
    【解决方案2】:

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

      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
    

    【讨论】:

      猜你喜欢
      • 2014-07-06
      • 2011-11-02
      • 1970-01-01
      • 1970-01-01
      • 2016-01-27
      • 1970-01-01
      • 1970-01-01
      • 2015-02-11
      • 1970-01-01
      相关资源
      最近更新 更多