Rack-pjax is middleware that lets you serve 'chrome-less' pages in respond to pjax-requests.
It does this by simply filtering the generated page; only the title and inner-html of the pjax-container are sent to the client.
While this won't save you any time rendering the page, it gives you more flexibility where or how to define the pjax-container. Ryan Bates featured rack-pjax on Railscasts and explains how this gem compares to pjax_rails.
Check out the Railscasts' notes how to integrate rack-pjax in your Rails 3.1 application.
You can find the source from the screencast over here.
Another sample-app: the original pjax-demo but with rack-pjax onboard can be found in the sample-app branch.
The more generic installation comes down to:
I. Add the gem to your Gemfile
# Gemfile
gem "rack-pjax"
II. Include rack-pjax as middleware to your application(-stack)
# config.ru
require ::File.expand_path('../config/environment', __FILE__)
use Rack::Pjax
run RackApp::Application
III. Install jquery-pjax. Make sure to add the 'data-pjax-container'-attribute to the container.
<head>
...
<script src="/javascripts/jquery.js"></script>
<script src="/javascripts/jquery.pjax.js"></script>
<script type="text/javascript">
$(function(){
$('a:not([data-remote]):not([data-behavior]):not([data-skip-pjax])').pjax('[data-pjax-container]')
})
</script>
...
</head>
<body>
<div data-pjax-container>
...
</div>
</body>
IV. Fire up your pushState-enabled browser and enjoy!
- Hpricot