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"} 

내 컨트롤러 뭔가를 보이는 메시지와 함께 실패 이쪽처럼

내가 뭘 잘못
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 

를 얻을 수 63,210
class StaticPagesController < ApplicationController 
    def home 
    end 

    def help 
    end 
    . 
    . 
end 

내가 레이크 경로를 실행하면?

+0

녹색 시험을 볼 수 당신이 당신의 테스트/컨트롤러/static_pages_controller_test.rb를 업데이트 한 번 확신합니다. 그게 가능하니? 4 대 5? – mkrinblk

+0

나는 이것을 향해 더 기대고있다. 나는 그가 튜토리얼을 업데이트했을 때 확신하지 못했지만, 지금은 그의 보석 파일에서 4th ed에 대해 레일 5.0.0이 나열되어 있지만 튜토리얼을 시작한 지 두 주 전에 나는 3th ed를 github에 사용하고 있었다고 생각한다. Rails 4.2.2를 나열하고 그 버전에서 그는 경로를 다르게 작성했습니다.* _path 구문과 관련된 두 버전간에 변경이 있었습니까? – 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 

Read 3.6 Naming Routes과 같이 작성하십시오.

현재 경로에 따라 경찰, 그 *_pathstatic_pages_about처럼, static_pages_help 등 당신이 as 옵션을 사용하지 않고 보여처럼 당신이 rake routes 출력을 얻을 않았다 방법을 잘 모르겠습니다 될 것입니다.

+0

이것은 여전히 ​​작동하지 않습니다 : 경로가 {: action => "/ static_pages/help", 컨트롤러 => "static_pages"}와 일치하지 않으며 루트 루트가 이와 유사한 이유를 설명하지 못합니다 : {: action => "/", : controller => "static_pages"} – mkrinblk

+0

@mkrinblk 레일즈 버전은 무엇입니까? –

-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