Ich mache ein einfaches Testprojekt, um mich auf meinen Test vorzubereiten. Ich bin ziemlich neu bei verschachtelten Ressourcen, in meinem Beispiel habe ich ein Newsitem und jedes Newselement hat Kommentare.Problem mit Routen im Funktionstest
Das Routing sieht wie folgt aus:
resources :comments
resources :newsitems do
resources :comments
end
Ich gründe die funktionalen Tests für Kommentare zur Zeit und ich lief in einige Probleme.
Dies wird den Index der Kommentare eines Newstitels erhalten. @Newsitem wird im Setup vonc deklariert.
test "should get index" do
get :index,:newsitem_id => @newsitem
assert_response :success
assert_not_nil assigns(:newsitem)
end
Aber das Problem liegt hier, in der "sollte neu".
test "should get new" do
get new_newsitem_comment_path(@newsitem)
assert_response :success
end
Ich bekomme den folgenden Fehler.
ActionController::RoutingError: No route matches {:controller=>"comments", :action=>"/newsitems/1/comments/new"}
Aber wenn ich in die Routen-Tabelle anschaue, sehe ich dies:
new_newsitem_comment GET /newsitems/:newsitem_id/comments/new(.:format) {:action=>"new", :controller=>"comments"}
Kann ich nicht verwenden Sie den Namen Pfad oder was ich falsch hier?
Vielen Dank im Voraus.
Immer noch die gleichen problemen. Ich verwende get: index, {: controller => "/ Kommentare",: newsitem_id => @newsitem} jetzt und es gibt keine Fehler zurück. Aber das bringt mich nur zum Host: port/comments/new right? Aber es sollte kein Problem sein, da ich das newsitem damit richtig gebe? Finden Sie es nur so seltsam, warum ich die Pfade nicht verwenden kann: s – Wishmaster
Da Sie tatsächlich verschachtelte Ressourcen in 'routes.rb' angeben, sollten Sie diese Zeile komplett entfernen. Schienen sollten einen benannten Pfad für Sie eingerichtet haben. Überprüfen Sie die Ausgabe von 'Rake Routen', aber es sollte etwas wie' new_newsitem_comment' sein. –