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"

Irake routesの場合、見栄えの良いルートが得られます。

/placements/baz

id がないことに注意してください。ただし、そのルートにアクセスshowしようとすると、「baz」がメソッド名ではなく ID であるかのように、Rails は代わりにコントローラーでメソッドを呼び出そうとします。ルートの最初のセグメント ( ) を別のものに変更することなく、求めているものを提供するルーティング構造を構築するにはどうすればよいplacementsでしょうか?

4

1 に答える 1

1

2 番目のルートをresourcesブロック上に移動します。つまり、

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

idまたは、 inの正規表現を追加します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 に答える