ViewVariantResponder

Installation

In your Gemfile, add this line:

gem "view_variant_responder"

Configuration

This is only a module, to use it, you have to create your own responder:

# lib/app_responder.rb
class AppResponder < ActionController::Responder
include Responders::ViewVariantResponder
end

If you're using any other responders, like Responders::FlashResponder, then include these there too.

Finally you need to configure your application to use it:

require "app_responder"
class ApplicationController < ActionController::Base
self.responder = AppResponder
end

Usage

Let's assume you want to show an overlay view of a post. Your controller already should look something like this:

class PostsController < ApplicationController
respond_to :html

def show
  @post = Post.find(params[:id])
  respond_with(@post)
end
end

Now you only need to add a separate view for the overlay

  • app/views/posts/show.html.erb - Your usual view
  • app/views/posts/show.overlay.html.haml - Your overlay view

To get this view using jquery for example, you'll do something like this:

$.ajax({
url: "/posts/5",
dataType: "html",
headers: {
  "X-View-Variant": "overlay"
},
success: function(content) {
  // Voila, your overlay content is now here
}
});