【问题标题】:Use same controller for multiple routes?对多条路线使用相同的控制器?
【发布时间】:2014-03-31 23:11:17
【问题描述】:

有没有办法编写以下路由,这样您就不必每次都指定相同的控制器?...

get 'jobs' => 'pages#jobs'
get 'contact' => 'pages#contact'
get 'terms' => 'pages#terms'
get 'privacy' => 'pages#privacy'

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4


    【解决方案1】:

    这里有几个选择:

    在这三个中,第一个即Using scope as "/" 将创建与routes defined in the question 创建的路由完全相同的路由。

    1。使用范围作为“/”

    scope "/", controller: :pages do
      get 'jobs' 
      get 'contact' 
      get 'terms' 
      get 'privacy' 
    end
    

    如下创建路由:

    jobs    GET    /jobs(.:format)                      pages#jobs
    contact GET    /contact(.:format)                   pages#contact
    terms   GET    /terms(.:format)                     pages#terms
    privacy GET    /privacy(.:format)                   pages#privacy
    

    2。将 Scope 用作“页面”

    scope :pages, controller: :pages do
      get 'jobs' 
      get 'contact' 
      get 'terms' 
      get 'privacy' 
    end
    

    如下创建路由:

    jobs    GET    /pages/jobs(.:format)                pages#jobs
    contact GET    /pages/contact(.:format)             pages#contact
    terms   GET    /pages/terms(.:format)               pages#terms
    privacy GET    /pages/privacy(.:format)             pages#privacy
    

    3。嵌套路线

    resources :pages do
      member do
        get 'jobs' 
        get 'contact' 
        get 'terms' 
        get 'privacy' 
      end
    end
    

    如下创建路由:

    jobs_page    GET    /pages/:id/jobs(.:format)            pages#jobs
    contact_page GET    /pages/:id/contact(.:format)         pages#contact
    terms_page   GET    /pages/:id/terms(.:format)           pages#terms
    privacy_page GET    /pages/:id/privacy(.:format)         pages#privacy
    

    【讨论】:

    • 如果控制器和作用域相同,对于#2,还有另一种使用命名空间的方式,比如namespace :pages do;get 'contact';end,它会给出这样的路由GET /pages/contact(.:format) pages#contact
    猜你喜欢
    • 2017-07-09
    • 1970-01-01
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2019-04-20
    • 1970-01-01
    相关资源
    最近更新 更多