这是我的路线文件
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
好的,这很好,但不得不说出这样的路线很烦人。
这是唯一的解决方案吗?
答案 0 :(得分:2)
我的猜测是Rails无法为您的路由指定名称,因为它不理解它。通常,您会想要写下您的路线:
/a/:id/b/:id # instead of /a/b/:id which Rails does not understand.
Rails将a
映射到控制器,其模型实例的标识为:id
,b
为另一个控制器,另一个模型实例的标识为:id
。
/a/b/:id
没有提到Rails惯例方面的任何内容。
将GET /a/b
命名为a_b
只是Rails的猜测,但它无法解决GET /a/z/:something
。会是什么? a_z_something
?