2011-09-19 4 views
5

Rails에서 중첩 된 리소스에 대한 테스트를 만들려고합니다. 관련 경로의 정의는 다음과 같습니다 RSpec에와 factory_girl를 사용RSpec을 사용하여 중첩 된 리소스 테스트

resources :communities do 
    resources :contents, :type => 'Content' 
end 

, 내가 예와 테스트를 시작하려합니다

describe ContentsController do 
    it 'should display a content item under a community' do 
    content = FactoryGirl.create(:content) 
    get :show, :community_id => content.community.id, :id => content.id 
    end 
end 

이러한 요청은 항상 내가 RSpec에와 중첩 된 리소스 경로를 지정하는 방법을 찾을 수없는 내 인생에 들어

Failure/Error: get :show, :community_id => content.community.id, :id => content.id 
ActionController::RoutingError: 
    No route matches {:community_id=>BSON::ObjectId('4e7773c6ac54c3d1ad000002'), 
    :id=>BSON::ObjectId('4e7773c6ac54c3d1ad000001'), :controller=>"contents", 
    :action=>"show"} 

초래한다. 근본적으로 뭔가 잘못하고있는 것입니까?

업데이트 : 난 당신이로 content.community.id을 전달하는 것을 볼

community_contents GET /communities/:community_id/contents(.:format)    {:action=>"index", :controller=>"contents"} 
         POST /communities/:community_id/contents(.:format)    {:action=>"create", :controller=>"contents"} 
new_community_content GET /communities/:community_id/contents/new(.:format)   {:action=>"new", :controller=>"contents"} 
edit_community_content GET /communities/:community_id/contents/:id/edit(.:format) {:action=>"edit", :controller=>"contents"} 
    community_content GET /communities/:community_id/contents/:id(.:format)   {:action=>"show", :controller=>"contents"} 
         PUT /communities/:community_id/contents/:id(.:format)   {:action=>"update", :controller=>"contents"} 
         DELETE /communities/:community_id/contents/:id(.:format)   {:action=>"destroy", :controller=>"contents"} 
+0

당신이 무엇 레이크 경로를 게시 할 수 있습니다 | grep 커뮤니티가 제공합니까? – corroded

+0

원래 질문으로 업데이트되었습니다. – Sami

+2

이상한 찾고 이드입니다. 공장 정의에서 어떤 일이 일어나는지 보여줄 수 있습니까? – zetetic

답변

3

: 레이크 노선의 관련 부분은 community_id 해당 개체가 식별되는 몽고 문서처럼 보이는 BSON :: ObjectId. 다음과 같은 대신 to_param 사용해보십시오 :

get :show, :community_id => content.community.to_param, :id => content.to_param