命名路由_path vs _url

Pri*_*ain 102 ruby-on-rails

Rails提供命名路由.

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

例如来自docs:

# and provide these named routes
root_url   # => 'http://www.example.com/'
root_path  # => '/'
Run Code Online (Sandbox Code Playgroud)

坦率地说,我从来没有使用过*_url帮助器,我能够使用的东西*_path.

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

他们如何彼此不同?

一些真实的例子,解释何时使用什么会很棒.

Chr*_*ers 148

_path帮助程序提供站点根目录相对路径.你应该在大多数时候使用它.

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


Mor*_*ori 12

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


Dan*_*ero 8

正如其他答案所解释的那样,您应该使用_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

  • 引用第一个链接(以防它消失):“但是,在控制器中,redirect_to 需要 *_url,因为 HTTP 规范要求 3xx 重定向中的 Location: 标头是一个完整的 URL。” (2认同)