ruby-on-rails - 使用Rails 4.1 ActionMailer::Preview预览电子邮件时,我需要设置哪些路线?

标签 ruby-on-rails routes preview mailer

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/

相关文章:

visual-studio-2012 - Visual Studio 2012 Web Deploy发布预览显示更改后的所有文件

jquery - 如何向此 jquery 脚本添加图像预览?

ruby-on-rails - 如何在时间对象中转换这种日期格式? "20111210000000 +0100"-> 2011-12-12 00 :00

ruby-on-rails - 如何将行数组渲染到 &lt;textarea&gt;?

ruby-on-rails - 就地编辑时间对象

php - Laravel 路线未定义,但显然是

Laravel - Route::resource 与 Route::controller

ruby-on-rails - 我应该在 Rails 匹配 :controller(/:action(/:id)) or resources? 中使用哪些路线

html - 编辑 css 后 href 链接不起作用

ruby-on-rails - asset_host 和相关协议(protocol) URL 被更改为 http