2015-05-29 126 views
2

我正在關注Michael Hartl的教程Ruby on Rails教程,並嘗試完成3.4.4節的最後一步。當我改變的routes.rb到爲什麼路由根不起作用?

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

並重新啓動http://localhost:3000/static_pages,他們說:「很抱歉,但出事了」。然後我重新啓動http://localhost:3000/static_pages/help,它的工作原理。然後,我通過

rake routes 

檢查路線,結果表明:

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

我檢查文件static_pages_controller.rb內容並沒有什麼區別的,在教程。有人能告訴我什麼是錯的嗎?

+1

你不是倒退?如果你訪問'http:// localhost:3000 /',你的路由定義是不是意味着它會在控制器'static_pages'上調用操作'home'?你想要映射哪個URL(以及哪個控制器/操作)? –

+0

解決了該問題。原諒我,我是網絡開發新手。 – Peterxwl

回答

2

好吧,用這個路由映射root 'static_pages#home',你說,當你點擊http://localhost:3000/ url時,你會被映射到StaticPages控制器的home動作。

但是你沒有定義任何http://localhost:3000/static_pages的映射,它是不正確的url根據route.rb文件。這就是你得到錯誤的原因。

閱讀rake routes輸出的第一行,它清楚地告訴你已經定義了什麼。

0

該行root 'static_pages#home'相當於get '/', to: 'static_pages#home'。這意味着URL localhost:3000/正在路由到StaticPages控制器上的#home操作。

如果你想localhost:3000/static_pages指向#home行動,加入這一行:

get 'static_pages', to: 'static_pages#home'