118

Rails 提供命名路由

可以使用路径或 url 调用路由助手

例如来自文档:

# and provide these named routes
root_url   # => 'http://www.example.com/'
root_path  # => '/'

坦率地说,我还没有使用过*_urlhelper,我能够使用*_path.

我有点困惑这两个不同的助手的目的是什么?

它们彼此有何不同?

一些真实的例子,解释何时使用什么会很棒。

4

4 回答 4

167

_path助手提供了一个站点根相对路径。您可能应该在大多数情况下使用它。

_urlhelpers 提供一个绝对路径,包括协议和服务器名称。我发现在服务器上创建指向应用程序的链接时,我主要在电子邮件中使用这些。它们应该主要在提供外部使用的链接时使用。(想想电子邮件链接、RSS 以及 YouTube 视频“分享”部分下的复制和粘贴 URL 字段等内容。)

于 2012-08-13T18:16:33.237 回答
14

当您在自己的站点中放置链接时,路由的域部分是多余的,并且会增加页面大小,因此您可以将 URL 的路径部分与*_pathhelper 一起使用。另一方面,如果要在您的站点之外使用 URL,例如电子邮件或 RSS 提要,则需要整个 URL,因此请使用*_url帮助程序。

于 2012-08-13T18:14:11.927 回答
11

正如其他答案所解释的那样,您应该_url在电子邮件链接等中使用。但我想补充一点,您还应该_url在重定向中使用,如下所述:

https://www.ruby-forum.com/topic/101346#221052

和这里:

http://viget.com/extend/rails-named-routes-path-vs-url

您还可以在此处查看 HTTP 规范的相关部分:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30

于 2014-11-24T21:35:32.700 回答
2

_path 提供相对路径。

_url 提供绝对路径。

每当您通过电子邮件等发送 URL 时,最好使用 _url 而不是 _path。

于 2014-11-13T11:41:25.503 回答