Create a gist now

Instantly share code, notes, and snippets.

class ApplicationController < ActionController::Base
before_filter :merge_json_params
private
def merge_json_params
if request.format.json?
body = request.body.read
request.body.rewind
params.merge!(ActiveSupport::JSON.decode(body)) unless body == ""
end
end
end
@DaniTheLion

This is a really nice gist for a really icky problem without a good solution on rails 3, so thumbs up! But in order to solve the issue for parameters wrapped in the model name I suggest modifying it to:

def fix_json_params
  if request.format.json?
    body = request.body.read
    request.body.rewind
    unless body == ""
      unmunged_body = ActiveSupport::JSON.decode(body)
      params.merge!(unmunged_body)
      params[_wrapper_options[:name]].merge!(unmunged_body)
    end
  end
end

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment