最近看项目的时候发现,有的地方用的 root_path,有的地方用的 root_url,但是我发现在用 url 的时候后面都跟有一个参数,比如:root_url,notice: “login!”
是不是只有使用 url 的时候才可以带参数啊,看 rails guide 上也没说这 2 者之间有什么区别,求指点,谢谢!
path 是相对路径,url 是绝对路径。
一楼正解。 补充一下,大多 link_to 的时候用 path,redirect_to 时候用 url
link_to
path
redirect_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 的感觉也踏实些了
#5 楼 @luikore 谢谢指点!
根据规范,301/302 redirect 响应需要指定完整的地址(虽然浏览器都支持 path) 所以 redirect_to 一般都用 url
#8 楼 @qhwa 这位解释问题直接引用规范,向你学习!
如果我想在所有生成的 path 前面加一个前缀呢,比如说我的整个项目在一个服务器上,而服务器上有很多 web 服务,而且服务器端口只有一个,所以需要在每个 webserver 前面加前缀,比如/app,现在可以通过 rails_relative_root_url 这个环境变量使生成的 assets 链接前面都加上/app 了,但是动态链接没有这样的变量可用怎么办?