0

我有一组如下所示的路线:

resources :placements do
  match '/foo' => "placements#foo"
  match '/bar' => "placements#bar"
end

这会产生行为与您期望的一样的路由:

/placements/1234/foo
/placements/1234/bar

但是,我还需要一些不需要单独放置的方法的“通用”路由。因此,我构建了一个如下所示的路线块:

resources :placements do
  match '/foo' => "placements#foo"
  match '/bar' => "placements#bar"
end
match '/placements/baz' => "placements#baz"

如果 I rake routes,我会得到一条看起来不错的路线:

/placements/baz

请注意缺少 id。但是,如果我尝试访问该路由,Rails 会尝试调用show控制器上的方法,就好像“baz”是一个 ID,而不是一个方法名称。如何构建一个路由结构,让我得到我所追求的,而不必将我的路由的第一段 ( placements) 更改为其他内容?

4

1 回答 1

1

将第二条路线移到resources块上,即

match '/placements/baz' => "placements#baz"
resources :placements, :id => /\d+/ do
  match '/foo' => "placements#foo"
  match '/bar' => "placements#bar"
end

或为idin添加正则表达式resources,例如:

resources :placements, :id => /\d+/ do
  match '/foo' => "placements#foo"
  match '/bar' => "placements#bar"
end
match '/placements/baz' => "placements#baz"
于 2012-07-16T14:16:28.010 回答