2012-10-01 2 views
1

를 업그레이드 한 후이 그것은 경로 테스트경로 오류 레일 및 여행 라우터

# the route test passess  
it "routes to #show" do 
    {:get => '/carro/volksvagen/gol-2-0/abc1234'}.should route_to(
    "site/vehicles#show", 
    :type => "carro", 
    :brand => "volksvagen", 
    :model => "gol-2-0", 
    :plate => "abc1234" 
) 
end 

를 전달하지만 업그레이드 레일 (3.2.0 => 3.2.8 후 내 경로

match "/:type/:brand/:model/:plate" => "site/vehicles#show", 
    :constraints => {:plate => /[a-z]{3}\d{4}/}, :as => :vehicle 

입니다) (1.0.0 => 1.0.4), 다음 CONTROLLER 테스트 (IMHO는 레일 3.2.0에서 다시 돌아 가지 않은 것으로 확인하지 않아야 함)가 실패하기 시작했다.

describe "#show" do 
    it "should be success" do 
    get :show, :plate => @vehicle.plate 
    response.should be_success 
    end 
end 

Site::VehiclesController#show should be success 
ActionController::RoutingError: 
    No route matches {:plate=>"ABC1672", :controller=>"site/vehicles", 
             :action=>"show"} 

을 제기 그리고 나는 모든 경로를 완료하는 경우에도 것은

describe "#show" do 
    it "should be success" do 
    get :show, :plate => @vehicle.plate, :model => 'model', 
     :type => 'type', :brand => 'brand' 
    response.should be_success 
    end 
end 

내가 얻을 바르 :

# No route matches {:plate=>"ABC1586", :model=>"model", :type=>"type", 
    :brand=>"brand", :controller=>"site/vehicles", :action=>"show"} 

응용 프로그램은 여전히 ​​작동하지만 것 내 시험이 훼어 때부터 멈출 때 알지 못한다. 링.

누구든지 해결했거나 유사한 문제가 있습니까?

나는 레일을 업그레이드하지 않는 것이 비슷한 질문에서 제안 된 것처럼이 오류를 피할 수 있음을 알고 있지만 해결책이라고 생각하지 않습니다.

Routing error when updating to Rails 3.2.6 or Rspec 2.11.0

은 사전에 감사합니다.

편집 :

vehicle /:type/:brand/:model/:plate(.:format) site/vehicles#show {:plate=>/[a-z]{3}\d{4}/} 
+0

호기심 때문에 왜 같은 URL에 POST, PUT 및 DELETE 요청을 수락하고 있습니까? – coreyward

+0

새내기이기 때문에 =) 제안? – Marcelo

+0

'match' 대신'get'을 사용하거나': via' 옵션을 사용하십시오. 개인적으로, 나는 가이드가 기본 경로 동사로'match'를 사용하여 도랑을 파야한다고 생각합니다. http://guides.rubyonrails.org/routing.html#http-verb-constraints – coreyward

답변

1

나는 당신의 문제가 당신의 정규식과 테스트 데이터 간의 불일치라고 생각합니다.

No route matches {:plate=>"ABC1586", :model=>"model", :type=>"type", 
:brand=>"brand", :controller=>"site/vehicles", :action=>"show"} 

그러나 경로는 판에 대한 다음과 같은 정규 표현식이 있습니다 : 당신의 오류 메시지에서 나는 볼

:plate => /[a-z]{3}\d{4}/ 

모든 소문자를 요구한다 대문자는 일치하지 않습니다. 따라서 테스트 데이터를 수정하거나 경로에서 정규 표현식을 수정해야합니다.

+0

명성! 고마워요! 나는 내가/i 수정자를 가졌다 고 확신한다. – Marcelo