All Projects → rails → Routing_concerns

rails / Routing_concerns

Licence: mit
Abstract common routing resource concerns to cut down on duplication.

Programming Languages

ruby
36898 projects - #4 most used programming language

Routing Concerns

Abstract common routing resource concerns to cut down on duplication.

Code before:

BCX::Application.routes.draw do
  resources :calendar_events do
    get :past, on: :collection
    resources :comments
  end

  resources :messages  { resources :comments }
  resources :forwards  { resources :comments }
  resources :uploads   { resources :comments }
  resources :documents { resources :comments }
  resources :todos     { resources :comments }
  
  resources :projects, defaults: { bucket_type: 'project' } do
    post :trash, :restore, on: :member
  
    resources :messages, except: [ :new ] do
      post :trash, :restore, on: :member
      resources :image_attachments, only: :index
    end
  
    resources :forwards do
      member do
        get  :content
        post :trash, :restore
      end
  
      resources :image_attachments, only: :index
    end
  
    resources :uploads do
      post :trash, :restore, on: :member
      resources :image_attachments, only: :index
    end
  
    resources :todolists do
      get :more, :completed, on: :collection
      post :trash, :restore, on: :member
    end
  
    resources :todos do
      post :toggle, :trash, :restore, on: :member
    end
  
    resources :comments do
      post :trash, on: :member
      resources :image_attachments, only: :index
    end
  end
end

Code after:

BCX::Application.routes.draw do
  concern :commentable do
    resources :comments
  end
  
  concern :trashable do
    post :trash, :restore, on: :member
  end

  concern :image_attachable do
    resources :image_attachments, only: :index
  end

  resources :calendar_events, concerns: :commentable do
    get :past, on: :collection
  end

  resources :messages, :forwards, :uploads, :documents, :todos, concerns: :commentable

  resources :projects, concerns: :trashable, defaults: { bucket_type: 'project' } do
    resources :messages, :uploads, :comments, concerns: [:trashable, :image_attachable]
  
    resources :forwards, concerns: [:trashable, :image_attachable] do
      get :content, on: :member
    end
  
    resources :todolists, concerns: :trashable do
      get :more, :completed, on: :collection
    end
  
    resources :todos, concerns: :trashable do
      post :toggle, on: :member
    end
  end
end

Compatibility

This plugin was designed as a proof-of-concept for a feature that's destined for Rails 4. It has only been tested on Rails 3.2+, but may work on earlier versions as well.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].