Rails path 和 url 有什么区别吗?

Blues · 2013年08月20日 · 最后由 wangm23456 回复于 2018年12月23日 · 9610 次阅读

最近看项目的时候发现,有的地方用的 root_path,有的地方用的 root_url,但是我发现在用 url 的时候后面都跟有一个参数,比如:root_url,notice: “login!”

是不是只有使用 url 的时候才可以带参数啊,看 rails guide 上也没说这 2 者之间有什么区别,求指点,谢谢!

path 是相对路径,url 是绝对路径。

一楼正解。 补充一下,大多 link_to 的时候用 pathredirect_to 时候用 url

@jjzxcc @libuchao 哦,明白了,我说为什么 rails guide 为什么没有重点说它们之间的区别呢,原来区别并不是那么大,而且看起来也不是很重要,谢谢!

#3 楼 @Blues 很重要的,比如发邮件的场景,邮件的模板里面都得用 url 的方式,不然相对路径发出去了,别人都打不开

url 多会在邮件中用到,不过对于大部分邮件客户端加个 base 设置也能继续用 path

#4 楼 @huacnlee 大神冒泡了,看了你的文章http://huacnlee.com/blog/how-to-start-learning-ruby-on-rails/ 我就开始了 rails,但是没能按照你说的路线去做,时间上确实不好安排,不过现在用 rails 可以做简单的 blog 了,有了基本概念,心里对 rails 的感觉也踏实些了

根据规范,301/302 redirect 响应需要指定完整的地址(虽然浏览器都支持 path) 所以 redirect_to 一般都用 url

#8 楼 @qhwa 这位解释问题直接引用规范,向你学习!

如果我想在所有生成的 path 前面加一个前缀呢,比如说我的整个项目在一个服务器上,而服务器上有很多 web 服务,而且服务器端口只有一个,所以需要在每个 webserver 前面加前缀,比如/app,现在可以通过 rails_relative_root_url 这个环境变量使生成的 assets 链接前面都加上/app 了,但是动态链接没有这样的变量可用怎么办?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号