2016-07-01 20 views
2

Doing Michael Hartl Rails Tutorial, aber ratlos auf Listing 5.28 (Getting RED Test anstelle von GRÜN), den Test zu ändern, um die neuen Routen anzupassen.Rails Tutorial statische Seiten routet Test rot (5.28)

Fehler für alle Seiten (/,/über,/Kontakt/Hilfe):

ActionController::UrlGenerationError: No route matches {:action=>"/*", :controller=>"static_pages"} 

routes.rb

Rails.application.routes.draw do 
    root 'static_pages#home' 
    get '/help', to: 'static_pages#help' 
    get '/about', to: 'static_pages#about' 
    get '/contact', to: 'static_pages#contact' 
end 

Tests/controllers/static_pages_controller_test.rb

require 'test_helper' 

class StaticPagesControllerTest < ActionController::TestCase 
    test "should get home" do 
    get root_path 
    assert_response :success 
    assert_select "title", "Ruby on Rails Tutorial Sample App" 
    end 

    test "should get help" do 
    get help_path 
    assert_response :success 
    assert_select "title", "Help | Ruby on Rails Tutorial Sample App" 
    end 

    test "should get about" do 
    get about_path 
    assert_response :success 
    assert_select "title", "About | Ruby on Rails Tutorial Sample App" 
    end 

    test "should get contact" do 
    get contact_path 
    assert_response :success 
    assert_select "title", "Contact | Ruby on Rails Tutorial Sample App" 
    end 

end 

static_pages_controller.rb

class StaticPagesController < ApplicationController 
    def home 
    end 

    def help 
    end 

    def about 
    end 

    def contact 
    end 

end 

Lassen Sie mich wissen, wenn Sie einen anderen Code sehen müssen! Habe versucht, nach jeder Route, wie folgt hinzuzufügen: '*', aber ohne Erfolg.

Nicht sicher, ob es ein Ruby/Rails Version Problem ist, aber ich verwende Rails 4.2.2 und Ruby 2.3.0 auf einer IDE, aber "Rails Test" (wie Hartl anweist zu verwenden) wird nicht funktionieren (tritt zurück "Testbefehl nicht gefunden"). Nicht sicher, ob das ein Hinweis auf ein größeres Problem ist oder nicht. Danke im Voraus!

EDIT: Links mit diesen Pfaden (wie unten) sind richtig dargestellt, es ist nur fehlgeschlagen die Tests.

<%= link_to "Home", root_path %> 
<%= link_to "Help", help_path %> 

Antwort

3

Ihre Test/controllers/static_pages_controller_test.rb haben Problem. Ich würde vorschlagen, es durch den folgenden Inhalt zu ersetzen.

require 'test_helper' 

class StaticPagesControllerTest < ActionDispatch::IntegrationTest 

    test "should get home" do 
    get root_path 
    assert_response :success 
    assert_select "title", "Ruby on Rails Tutorial Sample App" 
    end 

    test "should get help" do 
    get help_path 
    assert_response :success 
    assert_select "title", "Help | Ruby on Rails Tutorial Sample App" 
    end 

    test "should get about" do 
    get about_path 
    assert_response :success 
    assert_select "title", "About | Ruby on Rails Tutorial Sample App" 
    end 

    test "should get contact" do 
    get contact_path 
    assert_response :success 
    assert_select "title", "Contact | Ruby on Rails Tutorial Sample App" 
    end 
end 

Ändern Sie die obige Datei, wie ich vorgeschlagen und laufen $ rails test Sie grün Test sehen. Ich empfehle Ihnen auch, Ihre App auf Rails 5.0.0 zu aktualisieren, da Michael Hartl sein rails tutorials auf Rails 5.0.0 aktualisiert hat. In Zukunft haben Sie mehr Dinge zu lernen und wenn Sie es aufrüsten, wäre Ihre Reise des Lernens fehlerfreier und angenehm.

+1

Versionen war das Problem! In den früheren Kapiteln befand ich mich in einer älteren Ausgabe des Buches, in der ich aufgefordert wurde, die Beispiel-App mit 4.2.2 zu erstellen. Irgendwann wechselte er dann ein paar Kapitel später auf die neueste Version des Buches für 5.0.0. Ich bin mir nicht sicher, wie lange ich es überstanden habe, ohne es zu merken, aber ich habe die App von Grund auf neu gestartet (ich war sicher, dass ich in der 5.0.0-Ausgabe von Hartls Buch war). Jetzt funktioniert alles wie ein Zauber - auf jeden Fall eine wertvolle Lektion gelernt, um sicherzustellen, dass ich auf der richtigen Version bin ... und Edition! – user2521295