ruby-on-rails – 带有奇怪路由错误的继承应用程序,没有路由匹配{}

每当其中一个邮件程序在主体包含link_to root_url之类的情况下触发时,它就会给出这个令人难以置信的无用错误:

ActionView::Template::Error: No route matches {}

跟踪无用或指向link_to方法.因为它在这里也是非常难以检测的,所以我要求堆栈溢出.

更新1:为了帮助,我发布了可怕的routes.rb文件:https://gist.github.com/2955610

更新2:在控制台中,app.root_url提供正确的返回.

更新3:link_to“无论如何”,root_url工作正常.这么奇怪!

更新4:它在常规的rails视图中工作正常.

更新5:已修复image_tag现在未在电子邮件中提供主机,输出:http://assets/…png. FFFFF.

更新6:我已经缩小到我在(在控制台中)app.url_for得到相同的错误.我认为这可能是相关的.

最佳答案
所以真正的答案是link_to在ActionMailer中的工作方式与在ActionController中的工作方式不同.不同的是,显然ActionController有一个名为:script_name的选项,这会为您做出各种假设.

虽然我不同意这种差异,但你可以做的却不多,所以这就是我最终做的事情:

link_to root_url, root_url

现在,为什么我会同时使用它们?有两个原因:

>我想将url作为锚文本和href.
>如果URL更改,我不想更新所有这些字符串.

转载注明原文:ruby-on-rails – 带有奇怪路由错误的继承应用程序,没有路由匹配{} - 代码日志