link_to 邮件程序中有一个 arg 损坏

link_to with single arg broken in mailer

刚刚将 Rails 3.2 应用程序更新到 Rails 4.2 并开始出现一个有趣的错误。每当我尝试在我的邮件程序模板中使用单个参数调用 link_to 时,我都会收到错误消息。但是,我可以在我的一个常规视图中进行相同的调用。

在我的邮件视图中,我试着这样称呼它:

# user_mailer/notify.html.haml
...
= link_to "https://example.com"

但是当我的作业处理程序处理电子邮件时,它报告错误 ActionView::Template::Error: No route matches {:action=>"index"}。 (有趣的是,这就是当您尝试不带任何参数调用 url_for 时得到的结果)。

但是,在我的主页上使用相同的东西没有问题:

# home/index.html.haml
...
= link_to "https://example.com"

输出:

<a href="https://example.com">https://example.com</a>

据我所知,查看文档时,Rails 3.2 和 4.2 之间的 link_to 没有任何变化所以我很困惑为什么这会停止工作......也很困惑为什么它在一个地方工作,但在另一个地方不工作。

link_to 只有一个参数并没有达到您的预期。如果您在视图中查看生成的 link,它只会指向您当前所在的站点。您必须提供两个参数,正文和 url.

= link_to "https://example.com"
# <a href="/">https://example.com</a>

不过你会需要这个

= link_to "https://example.com", "https://example.com"