为什么Rails只列出我的一些路线?

时间:2013-08-26 18:21:55

标签: ruby-on-rails routes

这是我的路线文件

Dumb::Application.routes.draw do

  # an auto-named route
  get '/a/b',            to: 'a#b'

  # apparently not auto-named???
  get '/a/z/:something', to: 'a#z'

end

这是rake routes

的输出
a_b GET /a/b(.:format)            a#b
    GET /a/z/:something(.:format) a#z
哇太糟糕了!至少为了一致性的缘故。如果我将a#z路线更改为

get '/a/z/:something', to: 'a#z', as: "a_z"

rake routes将显示

a_b GET /a/b(.:format)            a#b
a_z GET /a/z/:something(.:format) a#z

好的,这很好,但不得不说出这样的路线很烦人。

这是唯一的解决方案吗?

1 个答案:

答案 0 :(得分:2)

我的猜测是Rails无法为您的路由指定名称,因为它不理解它。通常,您会想要写下您的路线:

/a/:id/b/:id  # instead of /a/b/:id which Rails does not understand.

Rails将a映射到控制器,其模型实例的标识为:idb为另一个控制器,另一个模型实例的标识为:id

/a/b/:id没有提到Rails惯例方面的任何内容。

GET /a/b命名为a_b只是Rails的猜测,但它无法解决GET /a/z/:something。会是什么? a_z_something