Rails 关于 routes 中的 resource 的单数复数问题

shangrenzhidao · 2014年11月06日 · 最后由 cifery 回复于 2014年11月06日 · 4100 次阅读

昨天想读一遍 rails 关于路由的文档,发现了一个不懂的地方 http://guides.rubyonrails.org/routing.html#singular-resources

get 'profile', to: 'users#show'  # Code A

get 'profile', to: :show' # Code B

上面说 A 会匹配 /profile 到 users_controller 的 show action, B 使用了 symbol 会直接匹配 show action, 并没有指出映射到那个 controller 是 show action, rails 是如何处理的 ?

另外,为什么要使用这种单数的 resource :geocoder route?

rails 是如何处理的 ?

会报错,缺少 controller。

#3 楼 @Rei ?这个是我在文档上看到的,难道我理解有问题?

#4 楼 @shangrenzhidao 文档说 Code A 表示这个意思,Code B 表示那个意思,但没说 Code B 可以跑起来。

#5 楼 @Rei 好吧,我应该去做个试验

@shangrenzhidao 呃,我的理解是,使用 resource 单数,例如

resource :geocoder

生成的路径名和控制器名称是相同的,只不过单复数不一样,也就是说调用时的路径是

/geocoder

对应的控制器也会是

geocoders#show

你可以仔细看下文档紧接着下面的表格,可以发现这一点。

update:

针对你的问题,

get 'profile', to: :show' # Code B

这段代码应该对应的控制器是

profiles#show

跟文档中上一行的例子无关。

多做试验,做完了还不理解,就把试验过程和你的想法发出来再问,不要一看不懂就发帖,貌似看你很活跃,其实很多问题你多多 Google 多多试验就能解决

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