A way to run JavaScript based on Rails controller actions. This gives you the freedom to DRY up your JavaScript, or modularize code around REST resources, whatever you can think of!

For example, with jWalker you can route a JS function to WelcomeController#index. When a user visits that page, jWalker will automatically cross to the correct route via controller_name/action_name and execute your JS.

With a few quick lines of code, you can get Rails and jWalker working in unison. Read on!



gem install j-walker


config.gem 'j-walker', :lib => 'j_walker

In the body of your layout (preferably the end):

<%= render 'shared/j_walker' %>

This is the glue that bonds Rails and jWalker together.


Requires jQuery.


This project was structured with Sprockets in mind. I'm assuming you have sprocket-rails set up.

Just like any sprocketized dependency:

//= require <j_walker>

in application.js (or any other source file preprocessed by Sprockets)


I can't offer any suggestions other than cloning src/j_walker.js into wherever your javascript files are stored and adding a <%= javascript_include_tag 'j_walker' %> into your application layout.


To set up routes (i.e., in application.js or any file that's loaded in every single Rails page):

jWalker.route("welcome", "index", function() {

jWalker.route("door", "show", function() {

Routes should be invoked using:

jWalker.cross("welcome", "index");

This is exactly what the j_walker partial does, except it plugs in the controller_name and action_name


This thing was developed test-first using blue-ridge. If you want to verify that everything works as expected, make sure the blue-ridge submodule is updated and open spec/javascripts/fixtures/j_walker.html in Firefox.


  • Params-based routing (instead of just controller and action)
  • Route aliasing
  • Full-stack testing

Copyright (c) 2010 Henry Hsu. See LICENSE for details.