From c416853cd572c1362615da1afb34cbc88de008bc Mon Sep 17 00:00:00 2001 From: Tom Clegg Date: Mon, 7 Jan 2013 10:09:44 -0800 Subject: [PATCH] uncamelcase params --- app/controllers/application_controller.rb | 25 +++++++++++++++++++ .../orvos/v1/metadata_controller.rb | 6 ++--- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index e8065d9505..15f314ce46 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -1,3 +1,28 @@ class ApplicationController < ActionController::Base protect_from_forgery + before_filter :uncamelcase_params_hash_keys + + protected + + def uncamelcase_params_hash_keys + uncamelcase_hash_keys(params) + end + + def uncamelcase_hash_keys(h) + if h.is_a? Hash + nh = Hash.new + h.each do |k,v| + if k.class == String + nk = k.underscore + elsif k.class == Symbol + nk = k.to_s.underscore.to_sym + else + nk = k + end + nh[nk] = uncamelcase_hash_keys(v) + end + h.replace(nh) + end + h + end end diff --git a/app/controllers/orvos/v1/metadata_controller.rb b/app/controllers/orvos/v1/metadata_controller.rb index 51abe5f576..635378c083 100644 --- a/app/controllers/orvos/v1/metadata_controller.rb +++ b/app/controllers/orvos/v1/metadata_controller.rb @@ -23,11 +23,11 @@ class Orvos::V1::MetadataController < ApplicationController end def create + @m = params[:metadatum] if params[:metadatum].class == String - @m = Metadatum.new(JSON.parse(params[:metadatum])) - else - @m = Metadatum.new(params[:metadatum]) + @m = uncamelcase_hash_keys(JSON.parse params[:metadatum]) end + @m = Metadatum.new @m respond_to do |format| if @m.save format.html { redirect_to @m, notice: 'Metadatum was successfully created.' } -- 2.30.2