每当其中一个邮件发送时,如果正文中包含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
相同的错误。我认为这可能是相关的。
答案 0 :(得分:6)
所以真正的答案是link_to
在ActionMailer中的工作方式与在ActionController中的工作方式不同。不同的是,显然ActionController有一个名为:script_name
的选项,这会为你做出各种各样的假设。
现在虽然我不同意这种差异,但你无能为力,所以这就是我最终做的事情:
link_to root_url, root_url
现在,我为什么要同时使用它们?有两个原因:
答案 1 :(得分:0)
邮寄者的问题是,你可能会错过“主持人”选项吗? :)