5

这是我的路线文件

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

好的,这很好,但是必须这样命名路线很烦人。

这是唯一的解决方案吗?

4

1 回答 1

2

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

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

Rails 映射a到一个带有 id 模型实例的控制器:idb另一个带有 id 模型实例的控制器:id

/a/b/:id在 Rails 约定方面没有提及任何内容。

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

于 2013-08-26T19:51:01.490 回答