首页 文章

命名路由_path vs _url

提问于
浏览
95

Rails提供named routes .

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

例如来自docs:

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

坦率地说,我从来没有使用 *_url 助手,我能够使用 *_path 来完成工作 .

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

他们如何彼此不同?

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

4 回答

  • 7

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

    _url 帮助程序提供绝对路径,包括协议和服务器名称 . 我've found that I mainly use these in emails when creating links to the app on the server. They should mainly be used when providing links for external use. (Think email links, RSS, and things like the copy and paste URL field under a YouTube video' s "Share"部分 . )

  • 137

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

  • 1

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

  • 12

    _path提供相对路径 .

    _url提供绝对路径 .

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

相关问题