RESTful Content Negotiation in Rails

content-negotiation, json, mootools, rest, ruby-on-rails

Solution

You can use a `respond_to` stanza in your controller method, like this:

respond_to do |format|
  format.html { # Generate an HTML response... }
  format.json { # Generate a JSON response... }
end

Rails determines the response format based on the value of the HTTP Accept header submitted by the client.

Problem

I'm looking to implement content negotiation on some resources in a Rails app. I'm using Mootools and will likely be able to tweak the content type accepted by an XMLHTTPRequest to "application/json". Is there any way to pick up on this information in my controller and generate JSON responses instead of XHTML? I'm trying to avoid doing something like: ``` http://site/resource/1?format=JSON ``` ...as it dirties up my URL, imposes a certain degree of redundancy and is not as flexible. Thanks!

Original source