Rails 5 个实体路径助手方法未找到

Rails 5 entity path helpers method not found

升级到 Rails 5.0.0.beta4 后,我在尝试使用 Rails 路径助手发送电子邮件时收到 'undefined method' 错误。我有一个名为 Project 的 ActiveRecord class,我正在尝试使用路径助手`project_path(project.id 将包含 link 的电子邮件发送到项目页面).在 Rails 5 之前,这曾经有效。

这是 link 的 ERB:

<%= project_path(@project.id) %>

我正在使用 ActionMailer 发送电子邮件。关于切换到 Rails 5 后可能导致此问题的原因的任何想法?

我认为这与Rails5没有任何关系,可能是,如果我错了,请大家指正。

假设您正在打开一封电子邮件。你看到一个 link 的东西,哦哦让我点击它。

点击

file:///projects/1 出现在浏览器中 window。嗯?那真是怪了。让我再试一次。

file:///projects/1啊,原来这个人把网站路径放到邮件里的问题我看出来了

TL;DR 使用 project_url 而不是 project_path.

显然在 rails 5 中删除了用于电子邮件的路径助手。新语法如 DickieBoy project_url 所述,它给出了整个 url 而不是部分url.

Rails 4.2 允许此功能作为过去 Rails 版本的结转;然而,Rails 4.2 通过 Rails 4.2 Release Notes 中的文档明确反对它。这种记录在案的劝阻被称为弃用,用作预先通知功能将在后续版本中破坏代码。

弃用的全部目的是让该功能在当前版本中继续工作,以免影响工作效率。在功能方面,这就是架构、库,甚至语言如何以可控的方式向前发展。请注意,安全问题不会遵循弃用流程,并就地修复,以便尽快消除漏洞。

Rails 5 是实际删除了 ActionMailer 对 _path 助手的支持的版本,该版本之前已被弃用。 Rails 5.0.0.beta1 CHANGELOG shows that the break was made then. The pull request was merged in Rails 5 RC1 with this commit.