Answers:
_path
帮助者提供了站点根相对路径。您可能大部分时间都应该使用此功能。
_url
帮助程序提供绝对路径,包括协议和服务器名称。我发现在服务器上创建指向应用程序的链接时,主要在电子邮件中使用这些功能。提供外部使用的链接时,应主要使用它们。(请考虑电子邮件链接,RSS,以及YouTube视频“共享”部分下的“复制和粘贴URL”字段之类的内容。)
当您在自己的站点中放置链接时,路由的域部分是多余的,并且增加了页面大小,因此您可以仅将URL的路径部分与*_path
帮助程序一起使用。另一方面,如果要在站点外部使用URL,例如电子邮件或RSS feed,则需要整个URL,因此请使用*_url
帮助器。
正如其他答案所解释的那样,您应该_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
_path提供相对路径。
_url提供绝对路径。
每当您通过电子邮件等发送URL时,最好的做法是使用_url而不是_path。