2017-11-30 5 views
0

pendingというルート/ビュー/コントローラのアクションで、現在のユーザーが要求したすべてのリソースを表示するには、:fooが必要です。このビューは機能的にはindexと同じで、現在のユーザーの保留中の両方で作成されたリソースを表示する点のみが異なります。私のアプリはget routeをリソースIDとして扱い、間違ったコントローラのアクションにマップするのはなぜですか?

マイroutes.rbを:

resources :foo 
get 'foo/pending', controller: 'foo', action: 'pending' 

FooController.rb

def pending 
@foo = current_user.foo.unapproved 
end 

私は私のgetルートでのコントローラとアクションを宣言しています、pending:idのparamとして使用されますにもかかわらず、およびすべてがFooControllerのshowアクションにルーティングされます。私はまだ書いていない。どうして?ありがとう!

+0

getをリソース行の上に移動してみてください。または、コレクションメソッドとしてリソースブロックの内部に含めることができます。 – Doon

答えて

1

リソース:あなたは

resources :foo 

get 'foo/pending' 

を配置する必要がありますので、fooはまた

get /foo/:id 

とRails内のルートが含まれてfooのコントローラのすべてのCRUDルートが生成されますが、トップダウン評価されます

0

リソース内に保留中のアクションのルートを定義することができます。fooは次のようになります。

resources :foo do 
    collection do 
    get :pending 
    end 
end 
関連する問題