带有奇怪路由错误的继承应用,没有路由匹配{}

时间:2012-06-19 17:51:06

标签: ruby-on-rails ruby ruby-on-rails-3 routes

每当其中一个邮件发送时,如果正文中包含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 "whatever", root_url工作得很好。太奇怪了!

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

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

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

2 个答案:

答案 0 :(得分:6)

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

现在虽然我不同意这种差异,但你无能为力,所以这就是我最终做的事情:

link_to root_url, root_url

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

  1. 我想将网址作为锚文本和href。
  2. 如果网址发生变化,我不想更新所有这些字符串。

答案 1 :(得分:0)

邮寄者的问题是,你可能会错过“主持人”选项吗? :)