Skip to content

Instantly share code, notes, and snippets.

@imanel
Last active August 30, 2017 17:55
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save imanel/e01089009479a1596056 to your computer and use it in GitHub Desktop.
Save imanel/e01089009479a1596056 to your computer and use it in GitHub Desktop.
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
Copy link

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