命名路由_path vs_url

Rails 提供 命名的路线

可以使用 path 或 url 调用 Routeshelper

例如:

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

坦率地说,我从来没有使用过 *_url助手,我能够得到的东西工作使用 *_path

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

how are they different from one another?

一些真实的例子和解释什么时候使用什么将是伟大的。

37083 次浏览

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

_path帮助程序提供了一个站点-根-相对路径。

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

_ path 提供相对路径。

_url provides absolute path.

无论何时发送电子邮件等 URL,使用 _ URL 而不是 _ path 是最好的做法。

正如其他答案所解释的那样,你应该在电子邮件链接中使用 _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