我有一个带有haml(3.1.4)电子邮件的应用程序(rails 3.2)。在电子邮件模板中,我想使用 link_to,但显然这 4 个都没有在生产中工作:
#{link_to(my_models_url)}
= link_to(my_models_url)
/ @url set to my_models_url
#{link_to(@url)}
= link_to(@url)
在开发模式下一切正常,但在生产中,我不断收到以下错误:
No route matches {}
actionpack (3.2.0) lib/action_dispatch/routing/route_set.rb:503:in `raise_routing_error'
当我之前使用辅助方法时它可以工作:
/ @my_link set to link_to(my_models_url)
#{@my_link}
= @my_link
但这并不方便,如果电子邮件中有更多链接,而且总的来说,我不明白为什么前 4 个选项中的任何一个都不合适。我不知道这个问题来自哪里。我将不胜感激这方面的任何帮助...
解决方案:
感谢 iWasRobbed,我发现了我的问题所在:
- 所有 {resource}_path 和 {resource}_url 都必须在邮件程序中设置为@variables,它们在邮件程序视图中不可用
- 显然,mailer 中的 link_to() 方法与 rails 视图中的方法不同......它总是需要 2 个参数,因此不需要在视图中使用 link_to(@link),而是需要使用 link_to(@link,@link)。噗噗……