2012-03-29 5 views
2

routes.rbをにすべきで、私が持っている:それはない場合は、ユーザーがログインして、偽されている場合一つの一致したルートは、別のものを上書きしますが、ない

[some routes] 

match '/me' => "scores#all_athlete_scores", :constraints => LoggedInChecker 
devise_scope :user do 
    match '/me' => "devise/sessions#new" 
end 

match '/scores/athlete/:id', :to =>"scores#all_athlete_scores", :as => "all_athlete_scores" 

[some more routes] 

LoggedInCheckerはtrueを返します。 falseの場合、2番目のルートはそれを取得し、ユーザーをログインページに送ります。 scores_controller_test.rbで

、私は:[:full_path] scores_controller_testに/[email protected]ある、ない/スコア/アスリート/

def test_get_all_athlete_scores 
    [set up] 
    get :all_athlete_scores, :id => @user 
end 

を奇妙な部分がrequest.filtered_pa​​rametersことです:id '。

私があるとroutes.rbを変更する場合:

[some routes] 

match '/scores/athlete/:id', :to =>"scores#all_athlete_scores", :as => "all_athlete_scores" 

match '/me' => "scores#all_athlete_scores", :constraints => LoggedInChecker 
devise_scope :user do 
    match '/me' => "devise/sessions#new" 
end 

[some more routes] 

テストが正常に動作し、request.filtered_pa​​rameters [:full_path] = /スコア/アスリート/:ID。

all-atlete_scoresにGETを行ったときに、この/ - 私は完全に邪魔されるべきではありません。

アイデア?

答えて

2

カリーム、

私は混乱は、あなたがこの方法だけでなく、名前のルート「all_athlete_scores」を持っているという事実であると思います。

get :all_athlete_scores, :id => @user 

は、あなたが期待しているものである、方法all_athlete_scoresではなく、名前のルートを呼び出します。

おそらく、このテスト内でそのメソッドの機能性をテストし、ルートのテストを別のテストに任せてください。

希望に役立ちます!

+0

うん、そうだ。ありがとう! – kareem

関連する問題