Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为什么Rails只列出了我的一些路线?_Ruby On Rails_Routes - Fatal编程技术网

Ruby on rails 为什么Rails只列出了我的一些路线?

Ruby on rails 为什么Rails只列出了我的一些路线?,ruby-on-rails,routes,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路由的输出 a#b GET/a/b(:格式)a#b GET/a/z/:某物(:格式)a#z 哇,太糟糕了!至少为了一致性。如果我将

这是我的路线文件

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路由的输出

a#b GET/a/b(:格式)a#b
GET/a/z/:某物(:格式)a#z
哇,太糟糕了!至少为了一致性。如果我将
a#z
路线更改为

get '/a/z/:something', to: 'a#z', as: "a_z"
rake routes
将显示

a#b GET/a/b(:格式)a#b
a#z GET/a/z/:某物(:格式)a#z
好的,那很好,但是这样命名路线很烦人


这是唯一的解决方案吗?

我猜Rails无法为您的路线指定名称,因为它不理解它。通常,您会希望将您的路线写为:

/a/:id/b/:id  # instead of /a/b/:id which Rails does not understand.
Rails将
a
映射到具有id
:id
模型实例的控制器,并将
b
映射到具有id
:id
模型实例的另一控制器

/a/b/:id
未提及Rails惯例方面的任何内容


获取
GET/a/b
命名为
a_b
只是Rails做出的猜测,但它无法解决
GET/a/z/:某些东西。会是什么
a_z_something

我可能错了,但我认为路由表只会在路由足够简单时自动分配名称。添加参数可能会混淆它。