我需要设置哪些路由才能使用 Rails 4.1 ActionMailer::P review 预览电子邮件


class UserPreview < ActionMailer::Preview
  # Accessible from http://localhost:3000/rails/mailers/notifier/welcome_email
  def welcome_email
    UserMailer.welcome_email(User.first)
  end
end

我有这个使用Ruby on Rails 4.1的简单邮件预览。

如果我注释掉,我routes.rb文件中的所有路由只留下这个,邮件预览有效:

MyTestApp::Application.routes.draw do
end

所以很明显,我的权利之一是在默认的 Rails 之前用于邮件预览。

我需要在路由 rb 文件中键入什么?

我知道

这是一个老问题,但我想无论如何我都会发布一个答案。

我猜你在 routes.rb 文件末尾附近有一条类似的路线:

match '/:controller(/:action(/:id))'

这是一条"包罗万象"的路线。 rails 代码将邮件预览路由附加到路由的末尾,因此由于"全部捕获"路由,它们永远不会到达。

听起来"包罗万象"路线可能会在 rails 5.0 中停用? 查看您的路线可能是个好主意,这样您就不需要"包罗万象"。 这是有人提到"全部"在某个时候被停用的问题的链接:https://github.com/rails/rails/issues/15600

所以,这是修复。 使用风险自负!

在"全部捕获"之前插入邮件路由。

    get '/rails/mailers' => "rails/mailers#index"
    get '/rails/mailers/*path' => "rails/mailers#preview"

这将使您的邮件程序正常工作,并且您的"全部捕获"将继续工作。 现在,这是一个完整的黑客,只有在您能够解决根本问题之前才应该使用,即消除对"全部捕获"路由的需求。

我确实在 rails 的问题列表中找到了以下内容,看起来已被接受并合并。 不确定它是什么版本,但似乎他们已经更新了邮件预览代码以在路由前置而不是附加它们。

https://github.com/rails/rails/pull/17896/files

祝你好运!

最新更新