Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Abstract common routing resource concerns to cut down on duplication.
branch: master

This branch is 8 commits behind rails:master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
test
.gitignore
Gemfile
Gemfile.lock
MIT-LICENSE
README.md
Rakefile
routing_concerns.gemspec

README.md

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.

Something went wrong with that request. Please try again.