3

私はすでにこのようなものを持っています:

resources :users, :path => '', :path_names => { :edit => 'settings' } do
  resources :photos
end

それは私が本当に欲しいルートのかなりの部分を私に与えます。

/{user_id}/settings #does everything "edit" did
/{user_id}/photos #lists photos for certain user

しかし、ルーティングウィッシュリストの最後のエントリは、リソースとRESTfulな方法で、インデックスパスとして「users」を戻すことです。現在、インデックスは優先されるルートUR1に失われているためです。したがって、基本的に:path => ''、インデックスアクションには適用したくありません。追加しようとしまし:except => [:index]たが、ActiveRecordはまだ/users/「users」のIDとして一致しようとします。(これは英数字であるため、制約はここでは役に立ちません。)

次に何を試してみるべきですか?それとも、私は腰を落ち着けて、個々の「一致」ステートメントを書く必要がありますか?リソースからこれを構築する方法があるはずだと思います...

4

1 に答える 1

4

私が最終的にやったのは、単純に 2 つ目のルーティング ルールを作成することでした (これは考えすぎでした)。ルートで定義rootしたので、'/' は index、new、および create に対して既に上書きされています。

なので、別の行のルールを書き直すだけで、実際には非常に簡単でした。

resources :users, :path => '/users', :only => [:index, :new, :create]
resources :users, :path => '', :path_names => { :edit => 'settings' } do
    resources :photos
end
于 2012-05-30T02:31:34.927 に答える