Simplify Rails Application With JSONAPI-Resources

Simplify Rails Application With JSONAPI-Resources

24 May 2021


JSONAPI::Resources is a gem or a framework which helps us design the server  that works with json-api and resources. It requires attributes and relationships to work the servers and APIs.


To install the JS application-

  • gem ‘jsonapi-resources’
  • bundle

Why JSONAPI::Resources?

  • JSONAPI::Resources makes the rails application more easy to communicate the json formatted data and api.
  • With the help of jsonapi resources we don’t need to maintain the controller.
  • JR makes it easy to communicate between the request and required data from the given resource table.

Work with rails application and jsonapi resources:

  • Change the application controller: We can include the jsonapi resource controller in it to make the application controller work with jsonapi resource controller.
    Simplify_Rails_Application_With_JSONAPI-Resources_01 OR
    We can just inherit the JSONAPI::ResourceController to ApplicationController.
    Simplify_Rails_Application_With_JSONAPI-Resources_02 We can also do this on a controller basis so specific controllers can work for the API.
  • Eager loading of the classes is needed to work this JSONAPI::Resources could be loaded and processed globally.
  • We might get CORS issues when accessing from the browser so we have to install the CORS gem for the application.
  • Use a rails generator to create a model for Users and that model is related to another model for Posts. It will look like this:
    • User model: rails g model User name:string
    • Post model: rails g model Post uset_id:integer title:string content:string
  • Run the migration with ‘rake db:migrate
  • After this tables will look like this:
    • users table
    • posts table
  • Use a rails generator to create the empty controllers and these controllers will be inherited from ResourceController.
    • rails g controller Users –skip-assets
    • rails g controller Posts –skip-assets
  • Create a directory to hold the resources: mkdir app/resources.
  • Create a resource for each model appending _resource.rb with the model name.
    • user_resource.rb
    • post_resource.rb
  • Define the routes:
  • Launch the rails server:  rails server.
  • Create a new user:
  • Create a new post:
  • For more information about JR visit:

Request a quote