Tha*_*you 5 routes ruby-on-rails
这是我的路线文件
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
Run Code Online (Sandbox Code Playgroud)
这是输出 rake routes
a_b GET /a/b(.:format) a#b
GET /a/z/:something(.:format) a#z
Run Code Online (Sandbox Code Playgroud)
哇太糟糕了!至少为了一致性的缘故.如果我改变a#z路线
get '/a/z/:something', to: 'a#z', as: "a_z"
Run Code Online (Sandbox Code Playgroud)
rake routes 会显示
a_b GET /a/b(.:format) a#b
a_z GET /a/z/:something(.:format) a#z
Run Code Online (Sandbox Code Playgroud)
好的,这很好,但不得不说出这样的路线很烦人.
这是唯一的解决方案吗?
我的猜测是 Rails 无法为您的路线分配名称,因为它不理解它。通常,您需要这样编写路线:
/a/:id/b/:id # instead of /a/b/:id which Rails does not understand.
Run Code Online (Sandbox Code Playgroud)
Rails 映射a到一个具有 id 模型实例的控制器:id,并b映射到另一个具有 id 模型实例的控制器:id。
/a/b/:id不涉及 Rails 约定中的任何内容。
被GET /a/b命名a_b只是 Rails 的一个猜测,但它不可能实现GET /a/z/:something。会是什么?a_z_something?
| 归档时间: |
|
| 查看次数: |
149 次 |
| 最近记录: |