2013-05-28 73 views
0

这里是我当前的routes.rb代码:如何简化这个routes.rb代码?

Mysite::Application.routes.draw do 
    get "pages/home" 

    get "pages/about" 

    get "pages/resume" 

    get "pages/contact" 

    root :to => "pages#home" 

    match "/about", to: "pages#about" 
    match "/resume", to: "pages#resume" 
    match "/contact", to: "pages#contact" 
end 

有没有办法来简化我的根目录下的页面控制器的路由?我可以将整个根目录与页面控制器本身相匹配,而不是将根目录中的每条路线都与页面控制器操作相匹配?

回答

1

删除前四个get s。您的rootmatch声明可以正常工作。

Mysite::Application.routes.draw do 

    match "/about", to: "pages#about" 
    match "/resume", to: "pages#resume" 
    match "/contact", to: "pages#contact" 
    root :to => "pages#home" 

end 
+2

注意,在轨道4,5也将不再是'match'匹配。当你进行这个飞跃时,你可以使用'get'。 – jason328

+0

在导轨4上,如果您提供':via',则可以使用'match' –

0

如果你想要一个像“页/约”是路径,然后

Mysite::Application.routes.draw do 

    root :to => "pages#home" 

    scope '/pages' do 
    match "/about", to: "pages#about" 
    match "/resume", to: "pages#resume" 
    match "/contact", to: "pages#contact" 
    end 

end 
0

如果你真的想路由整个根目录下的页面控制器,您都可以得出一个导管路线:

match '/*path', to: 'pages#show' 

在你的路由的结尾这样做没有捕捉定义previeously所有请求。 在你的网页#表明您可以检查的路径,并尝试找到匹配的网页 即

search = params[:path].split('/').last 

获取路径的最后一部分,

@page = Page.find_by_titel_or_id search 

尝试通过标题找到一个匹配的页面。 (因此,通过CMS做过类似refinery_cms)

0
Mysite::Application.routes.draw do 
# Layout 
    resources :pages do 
    get 'about' => 'pages#about', :on => :collection 
    get 'resume' => 'pages#resume', :on => :collection 
    get 'contact' => 'pages#contact', :on => :collection 
    end 
    match 'About' => 'pages#about', :as => :About 
    match 'Resume' => 'pages#resume', :as => :Resume 
    match 'Contact' => 'pages#contact', :as => :Contact 
    root :to => "pages#home" 
end 

现在你可以直接使用这个像

<a href='/Contact'>Contact Us</a>