命名路线_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