命名路线_path vs _url

Rails提供了命名路由 。

可以使用path或URL调用路由助手

例如从文档:

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

坦率地说,我从来没有使用*_url帮手,我能够使用*_path东西工作。

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

他们有什么不同?

一些真实的例子,解释什么时候使用什么是好的。

_path助手提供了一个站点根相对path。 你大概应该用这个。

_url助手提供了一个绝对path,包括协议和服务器名称。 我发现在创build服务器上的应用程序链接时,我主要在电子邮件中使用这些内容。 在提供外部链接时主要应该使用这些链接。 (认为​​电子邮件链接,RSS和YouTubevideo的“共享”部分下的复制和粘贴url字段)。

当您在自己的站点中放置一个链接时,路由的域部分是多余的,并添加到页面大小,因此您可以使用*_path帮助程序的URLpath部分。 另一方面,如果要在您的网站之外使用该URL,例如电子邮件或RSS源,则需要整个URL,因此请使用*_url帮助程序。

正如其他答案解释,你应该在电子邮件链接等使用_url但我想补充一点,你也应该使用redirect_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

_path提供相对path。

_url提供绝对path。

无论何时您发送电子邮件中的URL,最好使用_url而不是_path。

正如它在这里所说的费尔南多,我总是会使用url “这将节省你很多头痛”如果有一天你使用https

我不记得究竟为什么或什么时候…也许与远程链接,但我记得,解决scheme是在_path更改_path _url