命名路由_path vs _url

时间:2012-08-13 18:10:13

标签: ruby-on-rails

Rails提供named routes

可以使用path或url

调用路径助手

例如来自docs:

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

坦率地说,我从未使用过*_url帮助器,但我能够使用*_path来解决问题。

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

他们彼此有什么不同?

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

4 个答案:

答案 0 :(得分:141)

_path帮助程序提供站点根目录相对路径。你应该在大部分时间都使用它。

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

答案 1 :(得分:12)

当您在自己的网站中放置链接时,路径的域部分是多余的,并且会增加页面大小,因此您只需使用带有*_path帮助程序的URL的路径部分即可。另一方面,如果要在您的网站之外使用该网址,例如电子邮件或RSS源,需要整个URL,因此请使用*_url帮助程序。

答案 2 :(得分:7)

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

答案 3 :(得分:2)

_path提供相对路径。

_url提供绝对路径。

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