1

私はrailstutorial.orgのMichael Hartlのチュートリアルに取り組んでいます。私はルーティングが機能するようにすることで第5章で難しさを感じています。 私はルートで起動した場合、これらの各レールに構文エラーがあります

routes.rb 

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

を提出*がこの構文の作品とすべてのテストに合格

static_pages_controller_test.rb 

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

のようなテストがあるが、後彼が使用して構文を変更したいです_path規約。

は今テストが

class StaticPagesControllerTest < ActionController::TestCase 
    test "should get home" do 
    get root_path 
    . 
    . 
    end 

test "should get help" do 
    get help_path 
    . 
    . 
    end 

のように見えると私は

root 'static_pages#home' 
get '/help', to: 'static_pages#help' 
get '/about', to: 'static_pages#about' 
get '/contact', to: 'static_pages#contact' 

へのルートを更新したが、今、すべてのテストが

ERROR["test_should_get_home", StaticPagesControllerTest, 2016-06-30  05:02:41 -0700] 
test_should_get_home#StaticPagesControllerTest (1467288161.43s) 
ActionController::UrlGenerationError:   ActionController::UrlGenerationError: 
No route matches {:action=>"/", :controller=>"static_pages"} 

ERROR["test_should_get_help", StaticPagesControllerTest, 2016-06-30 05:02:41 -0700] 
test_should_get_help#StaticPagesControllerTest (1467288161.43s) 
ActionController::UrlGenerationError:   ActionController::UrlGenerationError: 
No route matches {:action=>"/help", :controller=>"static_pages"} 

私のコントローラは何かに見えるメッセージで失敗しますこのように

class StaticPagesController < ApplicationController 
    def home 
    end 

    def help 
    end 
    . 
    . 
end 

私は熊手ルートを実行する場合、私は

Prefix Verb URI Pattern  Controller#Action 
    root GET/    static_pages#home 
    help GET /help(.:format) static_pages#help 
    about GET /about(.:format) static_pages#about 
contact GET /contact(.:format) static_pages#contact 

は私が間違って何をやってもらいますか?

+0

緑のテストが表示されますあなたテスト/コントローラ/ static_pages_controller_test.rbを更新したら、確信しています。それは可能ですか? 4対5? – mkrinblk

+0

私はこれにもっと傾いています。私は彼がチュートリアルを更新した時は確信していませんが、今度は彼の宝石ファイルで4th-edにレール5.0.0が掲載されていますが、2週間前にチュートリアルを開始したときには、 Rails 4.2.2をリストアップし、そのエディションで彼はルートを別に書いています。* _path構文に関する2つのバージョンの間に変更がありましたか? – mkrinblk

+1

はい作成者は先週5.0.0でレールチュートリアルを更新しました。あなたはそれを更新することをお勧めします。これにより、さらに快適でエラーのない旅が可能になります。5.0.0で学ぶにはもっと新しいものが得られます –

答えて

0

はい著者が更新されたレールのチュートリアルを。あなたがさらに旅をより快適かつエラーフリーになるもそれを更新示唆されたことに加えて、あなたはより多くの新しい物事が5.0.0

更新ごテスト/コントローラ/ static_pages_controller_test.rbで学ぶようになるだろう

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 

は、私はあなたが私はレールのバージョンはこれとは何かを持っている場合疑問に始めています$ rails test

1

テストごとに動的ルートヘルパーを作成できるように、これらのルートを書き直す必要があります。好きなように書く、

get 'static_pages/help' , as: :help 
get 'static_pages/about' , as: :about 
get 'static_pages/contact' , as: :contact 

3.6 Naming Routesを読んでください。あなたの現在のルートを1として

、それら*_pathは、私はあなたがasオプションを使用せずに示されているように、どのようにrake routes出力を手に入れたかわからないstatic_pages_aboutstatic_pages_helpなどのようになります。

+0

これはまだ動作していませんが、エラーが発生しています:{:action => "/ static_pages/help"、:controller => "static_pages"}と一致するルートはありません。 {:action => "/"、:controller => "static_pages"} – mkrinblk

+0

@mkrinblk Railsのバージョンは何ですか? –

-1

は、私はとてもわからないんだけど、あなたがこれを行う場合は何が起こる:5.0.0先週と

root 'static_pages#home' 
get 'help', to: 'static_pages#help' 
get 'about', to: 'static_pages#about' 
get 'contact', to: 'static_pages#contact' 
+0

同じものは一致しません{:action => "/ help"、:controller => "static_pages"} – mkrinblk

関連する問題