James Almond : Ruby Developer

Simple Rails route helpers

Sometimes you end up with route configurations that repeat through your routes.rb file. Taking inspiration from Devise I added some little route helpers to the app I’m working on.

Before:

MyApp::Application.routes.draw do
  resources :pages do
    get :delete, :on => :member
    resources :images
    resources :tags
  end
  resources :people do
    get :delete, :on => :member
    resources :images
    resources :tags
  end
  resources :places do
    get :delete, :on => :member
    resources :images
    resources :tags
  end
end

If we add a simple helper to the routes:

module MyApp::RoutesHelpers
  def default_routes_for(*models)
    models.each do |model|
      resources model do
        get :delete, :on => :member
        resources :images
        resources :tags
      end
    end
  end
end

ActionDispatch::Routing::Mapper.send(:include, MyApp::RoutesHelpers)

Then we can use the following rotues:

MyApp::Application.routes.draw do
  default_routes_for(:pages, :people, :places)
end

A trivial example, maybe, but a simple little tidy up!

blog comments powered by Disqus