2014-09-28 172 views
2

需要一些幫助的Rails(使用Rails 4.0.8和2.0.0紅寶石)...設置在Rails的靜態路由

我想修改我的路線,這樣反而具有...

App::Application.routes.draw.do 
    get "static_pages/home" 
    get "static_pages/help" 
    get "static_pages/about" 
    get "static_pages/contact" 
end 

..在我路線fI'm將其設定爲....

App::Application.routes.draw.do 
    root 'static_pages#home' 
    match '/help', to: 'static_pages#help', via: 'get' 
    match '/about', to: 'static_pages#about', via: 'get' 
    match '/contact', to: 'static_pages#contact', via: 'get' 
end 

...但是當我這樣做,我認爲「匹配‘/關於’」應該在控制器和視圖中自動創建命名路線,看起來像......

about_path -> '/about' 
about_url -> 'http://localhost:3000/about' 

...但它不這樣做在我的控制器。所以我想,「好吧,我手動把他們」,所以我做了應用程序/控制器/ static_pages_controller.rb ...

class StaticPagesController < ApplicationController 
    def home 
     root_path -> '/' 
     root_url -> 'http://localhost:3000/' 
    end 

    def help 
     help_path -> '/help' 
     help_url -> 'http://localhost:3000/help' 
    end 

    def about 
     about_path -> '/about' 
     about_url -> 'http://localhost:3000/about' 
    end 

    def contact 
     contact_path -> '/contact' 
     contact_url -> 'http://localhost:3000/contact' 
    end 
end 

...它不會做任何事情。所以現在當我嘗試去主頁時,例如,我得到路由錯誤沒有路由匹配[GET]「/ static_pages/home」

我是新來的rails開發,所以我敢肯定,這裏有一些相當明顯的東西。任何人都可以闡明發生了什麼?非常感激。

EDIT 1回答

答案被BroiSatse和赤穗給予...

在路由配置我mising的爲:關鍵,所以更新我的代碼

App::Application.routes.draw.do 
    root 'static_pages#home' 
    match '/help', to: 'static_pages#help', via: 'get', as: :help 
    match '/about', to: 'static_pages#about', via: 'get', as: :about 
    match '/contact', to: 'static_pages#contact', via: 'get', as: :contact 
end 

竅門。謝謝!

+0

這不是動態路線。這些是靜態路線 – ahnbizcad 2014-10-21 11:33:51

回答

4

所有你缺少的是as關鍵:

App::Application.routes.draw.do 
    root 'static_pages#home' 
    match '/help', to: 'static_pages#help', via: 'get', as: :help 
    match '/about', to: 'static_pages#about', via: 'get', as: :about 
    match '/contact', to: 'static_pages#contact', via: 'get', as: :contact 
end 

添加爲重點將使命名的路由,將創建所需的url_helpers。

編輯:

但是,你可以做的更好:

App::Application.routes.draw.do 
    root 'static_pages#home' 

    scope controller: :static_pages do 
    get :help 
    get :about 
    get :contact 
    end 
end 
+0

明白了,非常感謝! – Ponchooo 2014-09-28 15:23:28

0

要定義命名的路線,你可以這樣做:

match '/about', to: 'static_pages#about', via: 'get', as: :about 

這會給你about_path

你可以找到更多關於命名路線here

+0

也工作,非常感謝。謝謝 – Ponchooo 2014-09-28 15:25:54