Rails 新手关于 routes 具名路由的一个疑问

Blues · 2013年07月20日 · 最后由 Blues 回复于 2013年07月21日 · 4036 次阅读

在我学习 rails 的 routes 的时候,看到关于讲到具名路由的时候,说类似是这样的: 本来的路由如果是这样的:

get '/static_pages/login'

定义具名路由应该这样:

match '/login' to: 'session#new'

当然 match 也可以换成 get

我想问的是,在公司的项目里面这样定义具名路由的也有,但是还有一种是这样的:

get 'login' to 'session#new'

第二个的里面的'login'前面为什么没有一个'/'呢?不明白,不是所有的都要在当前的 root 节点后面吗,如果没有'/'怎么能够表示在 root 节点下呢?在好几本书里面讲具名路由都没有这种写法。

问题可能有点小白,求扫盲,谢谢!

应该是默认都在根目录下吧,反正 guides 和 api 里都是这么用的

#1 楼 @messiahxu 对啊,都是在根目录下面,但是我就是不明白为什么它的前面怎么没有了那个'/',这样做,我在 browser 里面也确实是看到了在 localhost:3000 的后面,难道那个'/'可要可不要?

我弱了 =。=!

试一下不就知道了 要是有没有/都一样 那就是可要可不要呗

这是惯例啊,以文件系统为例,假设你当前就在 / 路径下,那么你输入 cd somepath 和输入 cd /somepath 得到的结果是一样的。Rails 的惯例也是如此,因为默认的就是 / ,不过最好写清楚,也就是所谓的“显示定义”,这样可以保证任何人都看得明白,不至于产生类似你这样的误解。

都试一下吧,再 rake routes 看看咯,Rails 4 之后都好像不推荐使用 match……

#3 楼 @ChanceDoor 试了,好像是可要可不要的。=。=!

#4 楼 @nightire 多谢提醒,我弱了。

#5 楼 @imlcl 好像 Rails 3 更喜欢 match,rails 4 还没看过.......

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