From 8df5b045f270ce502a0bd9f203c80ec5be64177e Mon Sep 17 00:00:00 2001 From: Kyle Shevlin Date: Mon, 13 Jun 2016 22:54:27 -0700 Subject: [PATCH 1/2] update integration documentation for ember and JSONAPI to include key_transform underscores to match the attribute and relationship underscore transformations --- docs/integrations/ember-and-json-api.md | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/docs/integrations/ember-and-json-api.md b/docs/integrations/ember-and-json-api.md index bd4fa4c0..1024f396 100644 --- a/docs/integrations/ember-and-json-api.md +++ b/docs/integrations/ember-and-json-api.md @@ -17,8 +17,30 @@ To solve this, in Ember, both the adapter and the serializer will need some modi ### Server-Side Changes -there are multiple mimetypes for json that should all be parsed similarly, so +First, set the adapter type in an initializer file: + +```ruby +# config/initializers/ams_config.rb +ActiveModelSerializers.config.adapter = :json_api +``` + +or: + +```ruby +# config/initializers/ams_config.rb +ActiveModelSerializers.config.adapter = ActiveModelSerializers::Adapter::JsonApi +``` + +You will also want to set the `key_transform` to `:underscore` since you will adjust the attributes in your Ember serializer to use underscores instead of dashes later. + +```ruby +# config/initializers/ams_config.rb +ActiveModelSerializers.config.key_transform = :underscore +``` + +There are multiple mimetypes for json that should all be parsed similarly, so in `config/initializers/mime_types.rb`: + ```ruby api_mime_types = %W( application/vnd.api+json From 4f508a88c93601c6c86d7c489853ddd1f89c1cb5 Mon Sep 17 00:00:00 2001 From: Kyle Shevlin Date: Tue, 14 Jun 2016 22:05:54 -0700 Subject: [PATCH 2/2] remove mime type registration, adjust key_transform advice --- docs/integrations/ember-and-json-api.md | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/docs/integrations/ember-and-json-api.md b/docs/integrations/ember-and-json-api.md index 1024f396..f3f23062 100644 --- a/docs/integrations/ember-and-json-api.md +++ b/docs/integrations/ember-and-json-api.md @@ -20,36 +20,29 @@ To solve this, in Ember, both the adapter and the serializer will need some modi First, set the adapter type in an initializer file: ```ruby -# config/initializers/ams_config.rb +# config/initializers/active_model_serializers.rb ActiveModelSerializers.config.adapter = :json_api ``` or: ```ruby -# config/initializers/ams_config.rb +# config/initializers/active_model_serializers.rb ActiveModelSerializers.config.adapter = ActiveModelSerializers::Adapter::JsonApi ``` -You will also want to set the `key_transform` to `:underscore` since you will adjust the attributes in your Ember serializer to use underscores instead of dashes later. +You will also want to set the `key_transform` to `:unaltered` since you will adjust the attributes in your Ember serializer to use underscores instead of dashes later. You could also use `:underscore`, but `:unaltered` is better for performance. ```ruby -# config/initializers/ams_config.rb -ActiveModelSerializers.config.key_transform = :underscore +# config/initializers/active_model_serializers.rb +ActiveModelSerializers.config.key_transform = :unaltered ``` -There are multiple mimetypes for json that should all be parsed similarly, so -in `config/initializers/mime_types.rb`: +Lastly, in order to properly handle JSON API responses, we need to register a JSON API renderer, like so: ```ruby -api_mime_types = %W( - application/vnd.api+json - text/x-json - application/json -) - -Mime::Type.unregister :json -Mime::Type.register 'application/json', :json, api_mime_types +# config/initializers/active_model_serializers.rb +require 'active_model_serializers/register_jsonapi_renderer' ``` ### Adapter Changes