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文件中键入什么?
最佳答案
我知道这是一个老问题,但我想我还是会发布答案。
我猜您在route.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"
这将使您的邮件收发器能够正常工作,而您的“全部接收”将继续工作。现在,这是一个完整的 hack ,仅在您能够解决根本问题之前才可以使用,从而消除了“全部捕获”路线的需要。
我确实在rails的问题列表中找到了以下内容,看起来已被接受并合并。不知道它是哪个版本,但似乎他们已经更新了邮件预览器代码以在路由之前添加而不是附加路由。
https://github.com/rails/rails/pull/17896/files
祝你好运!
关于ruby-on-rails - 使用Rails 4.1 ActionMailer::Preview预览电子邮件时,我需要设置哪些路线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26130130/