asset_pipeline_routes icon indicating copy to clipboard operation
asset_pipeline_routes copied to clipboard

add routing helpers to your Rails 3.2 asset pipeline

asset_pipeline_routes

Build Status Gem Version

asset_pipeline_routes defines a r shorthand function which you can use inside your javascript assets.

What it does

Assuming you got a routes.rb with:

resources :users # => yields multiple routes, e.g. /users/:id(.:format)

Inside your javascript assets you can now write:

r(users_path)        // => yields '/users'
r(user_path)         // => yields '/users/{{id}}'
r(user_path, userId) // => yields '/users/'+userId

It works with coffeescript as well:

promise = $.rails.ajax({
  url: r(user_path, userId)
})

If you are compiling client side templates with the rails asset pipeline this works inside templates as well, e.g.

%form{ action: r(user_path) }

will generate

<form action='/users/{{id}}'></form>

Upgrading Notes

v0.2 introduced code breaking changes! THIS WILL NO LONGER WORK

// inside application.js.erb
var url = '<%= r.user_path 42 %>';

Instead, you can now drop the .erb extension and use r inline:

var url = r(user_path, 42);

Tests

You can run the test suite locally using the following commands:

$ gem install bundler
$ cd /path/to/local/asset_pipeline_routes
$ bundle install
$ bundle exec rake spec

Whatever you do, make sure the tests stay green ;)

License

Copyright © 2011-2013 Raphael Randschau [email protected]

asset_pipeline_routes is distributed under an MIT-style license. See LICENSE for details.