2011-12-21 21 views
1

私のコントローラの1つにカスタムアクションの要求仕様を書こうとしています。rspecの名前付きカスタムルート

私のroutes.rbをこのようなものです:

controller :profile, :path => 'profile' do 
    match 'view_friends/:circle_id', :to => :view_friends, :via => [:get], :as => 'view_friends' 
end 
resources :profile 

私はこのアクションを訪問したい、と私は

visit profile_path 
visit new_profile_path 
etc 

を使用することができますように私は

visit view_friends_profile_path 
を行うことができたのことを期待していました

しかし、これは私に "エラー未定義のローカル変数またはメソッド"を与える

私は

visit profile_path.to_s + '/view_friends/' + circle.id.to_s 

を書き込むことによって、目的の動作を取得することができますしかし、それは恐ろしいです。カスタムアクションに名前を付けるには、何が欠けていますか?

編集:すくいルートから

関連出力

view_friends GET  (/:locale)/profile/view_friends/:circle_id(.:format)  {:controller=>"profile", :action=>"view_friends"} 
+0

適切なヘルパーメソッドを使用していることを確認するためにレーキルートを実行します。たぶん、コマンドの出力を質問に追加することができます。 – lucapette

+0

問題を解決できましたか? – Batkins

答えて

1

まず私は少し混乱しています。通常、コントローラを作成するときには、コントローラに複数の名前が付きます。たとえば、モデル名がProfileの場合、ProfilesControllerとなります。あなたの質問を書いているところでは、コントローラの名前はProfileControllerです。珍しいものと思われるので、それが明らかにできるなら、参考になります。つまり、これを試してみてください:

# in routes.rb 
resources :profile do 
    member do 
    match 'view_friends/:circle_id' => :view_friends, :via => :get, :as => 'view_friends' 
    end 
end 

必要なものを作成する必要があります。

view_friends_profile_path(profile_id, circle_id) 
関連する問題