2014-09-28 212 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