Rails 5实体路径帮助方法未找到。

4

在升级到Rails 5.0.0.beta4之后,试图使用Rails路径助手发送电子邮件时,我遇到了一个“未定义的方法”错误。 我有一个名为Project的ActiveRecord类,并且我正在尝试使用路径助手`project_path(project.id)'发送包含指向项目页面的链接的电子邮件。 在Rails 5之前,这个是可行的。

这里是链接的ERB:

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

我正在使用ActionMailer发送电子邮件。在切换到Rails 5之后,有什么可能导致这个问题的想法吗?

你尝试过运行 rake routes 命令来查看可用的路径方法吗? - Jon Cairns
3个回答

6
Rails 4.2允许此功能作为从过去的Rails版本中延续下来的特性; 然而,Rails 4.2通过 Rails 4.2 Release Notes中的文档明确不鼓励使用它。这种记录的不鼓励被称为弃用,并被用作提前通知,说明该功能将在后续发布中破坏代码。
整个弃用的目的是允许该功能在当前版本中继续工作,以不影响生产力。就功能而言,这是架构、库甚至语言以受控方式向前发展的方式。请注意,安全问题不遵循弃用流程,并且会在原地修复,以尽快消除漏洞。
Rails 5是一版实际删除了ActionMailer对_path帮助程序支持的版本,先前已经被弃用。Rails 5.0.0.beta1 CHANGELOG显示了这个变化。pull request在Rails 5 RC1中已经合并,使用了this commit

1

据说在 Rails 5 中已经删除了电子邮件的路径助手。新的语法如 DickieBoy 所描述的 project_url,它会返回整个 URL 而不仅仅是 URL 的一部分。


0

我不认为这与Rails 5有任何关系,如果我错了,请有人纠正我。

想象一下你正在打开一封电子邮件。 你看到一个链接,噢让我点击它。

点击

file:///projects/1出现在浏览器窗口中。 嗯? 这很奇怪。 让我再试一次。

file:///projects/1啊,我看到这个人试图把网站的路径放入电子邮件中引起了问题。

TL;DR使用project_url而不是project_path


由于这个错误,邮件没有被发送。 - Pablo Jomer
抱歉,这是因为答案中的叙述不是一个结构化的回答,并且确实是Rails的变动导致了这个问题。 - Pablo Jomer
如果你更正了你的答案,我会点赞并核对它。 - Pablo Jomer
http://guides.rubyonrails.org/action_mailer_basics.html#generating-urls-in-action-mailer-views与Rails 5或弃用有什么关系?该指南引用了当前稳定版本(4.2.6),并且行为多年来一直没有改变。 - Tom Lord
@DickieBoy,这个答案的问题在于它表明没有任何问题,而不是某个功能已被删除。是的,没有任何问题,但是当从4升级到5时,这并不是有用的信息。此外,由于我们在链接中提供了服务器地址和其他手段,因此没有理由怀疑该链接应该将用户引导到file://。 - Pablo Jomer
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接