2014-04-22 16 views
8

Ich versuche, meine Anwendung von Rails 3.2.x zu Rails 4.0.4 zu portieren. Alle Edelsteine ​​wurden kompatibel gemacht und ich bin in der Phase der Reparatur von versagenden Tests.Rails 4 Upgrade - ActionController :: UrlGenerationError - Keine Route passt

Ich habe diesen seltsamen Testfehler.

Mein routes.rb

resources :my_reports, only: [:index] do 
    collection do 
    get "/report/:filename", to: :show, prefix: "pri/excl/rep", as: :show 
    end 
end 

Meine spec der in Rails 3.2.x wurde und jetzt nach dem Update auf 4.0.4

describe MyReportsController do 
    describe "#show" do 
    def make_request 
     get :show, prefix: 'some/place', filename: 'foo', format: 'doc' 
    end 

    it "makes a simple request" do 
     make_request 
    end 
    end 
end 

andernfalls vorbei erhalte ich die folgenden Fehler

Failure/Error: get :show, prefix: 'some/place', filename: 'foo', format: 'doc' 
    ActionController::UrlGenerationError: 
     No route matches {:action=>"show", :controller=>"my_reports", 
     :filename=>"foo", :format=>"doc", :prefix=>"some/place"} 

Ich bin an diesem Punkt fest, Hinweise sind willkommen. Ich verwende rspec und rspec-rails Version 2.14.1.

Antwort

13

Eine Dummy übergeben: ID im Test behoben das Problem für mich, obwohl ich es nicht mögen würde, Tests bestehen.

get :show, id: "", prefix: 'some/place', filename: 'foo', format: 'doc' 

Siehe den Stand der Schienenfreigaben here.

0

Sie beschreiben die show Methode, aber Ihre Route ist nur für die index eins. Vielleicht ist es ein Anfang der Lösung.

+0

Nein, ich habe es bereits überprüft. Sogar enthalten in den Ressourcen zeigen, aber das sollte idealerweise keine Auswirkungen haben, da ich explizit '' as' – bragboy

+0

haben Sie direkt versucht haben, zu bekommen: show, prefix: ... 'ohne verschachtelte Methode? – BriceB