ruby-on-railsjsonjsonapi-resources

How to render a jsonapi-resources response in an custom controller action?


I have implemented my own object creation logic by overriding the create action in a JSONAPI::ResourceController controller.

After successful creation, I want to render the created object representation.

How to render this automatically generated JSON API response, using the jsonapi-resources gem?

Calling the super method does also trigger the default resource creation logic, so this does not work out for me.

class Api::V1::TransactionsController < JSONAPI::ResourceController
  def create
    @transaction = Transaction.create_from_api_request(request.headers, params)

    # render automatic generated JSON API response (object representation)
  end
end

Solution

  • You could do something like this:

    class UsersController < JSONAPI::ResourceController
      def create
        user = create_user_from(request_params)
    
        render json: serialize_user(user)
      end
    
      def serialize_user(user)
        JSONAPI::ResourceSerializer
                .new(UserResource)
                .serialize_to_hash(UserResource.new(user, nil))
      end
    end
    

    this way you will get a json response that is compliant with Jsonapi standards