Andrew Walz
Andrew Walz

Reputation: 750

Add identifier for JSON array in Ruby on Rails

I am looking for a way to add an identifier to my JSON output so it can be more easily parsed. Currently, the output is :

[  
   {  
      "id":9,
      "name":"Test Location",
      "description":"Test Description",
      "address":"123 Fake Street",
      "latitude":-85.0,
      "longitude":-101.10101,
      "created_at":"2015-11-15T21:25:08.643Z",
      "updated_at":"2015-11-15T21:27:23.419Z"
   },
   {  
      "id":10,
      "name":"Test Location",
      "description":"testest",
      "address":"estesets",
      "latitude":1.0,
      "longitude":1.0,
      "created_at":"2015-11-15T22:05:39.224Z",
      "updated_at":"2015-11-15T22:05:39.224Z"
   }
]

The ideal output would be:

{ locations: 
  [  
       {  
          "id":9,
          "name":"Test Location",
          "description":"Test Description",
          "address":"123 Fake Street",
          "latitude":-85.0,
          "longitude":-101.10101,
          "created_at":"2015-11-15T21:25:08.643Z",
          "updated_at":"2015-11-15T21:27:23.419Z"
       },
       {  
          "id":10,
          "name":"Test Location",
          "description":"testest",
          "address":"estesets",
          "latitude":1.0,
          "longitude":1.0,
          "created_at":"2015-11-15T22:05:39.224Z",
          "updated_at":"2015-11-15T22:05:39.224Z"
       }
    ]
}

My current controller is:

module Api
  module V1
    class LocationsController < ApplicationController
unless Rails.env.test?
      before_filter :restrict_access
    end
      respond_to :json

      def index
        @locations = Location.all
        respond_with @locations
      end

      private

      def restrict_access
        api_key = ApiKey.find_by_access_token(params[:access_token])
        head :unauthorized unless api_key
      end
    end
  end
end

I would like for it to have a name of Locations so I can more easily parse it. Thanks for the help!

Upvotes: 0

Views: 65

Answers (2)

Eupatoria
Eupatoria

Reputation: 130

Just work with your @locations.

You can do something like:

@new_locations = {}
@new_locations = {'locations' => @locations}

Upvotes: 0

Damiano Stoffie
Damiano Stoffie

Reputation: 897

def index
  @locations = Location.all
  respond_with locations: @locations
end

Results in proper output

Upvotes: 2

Related Questions