2016-04-03 8 views
0
empfangen

Ich habe eine einfache Ember 2.4-Anwendung. Hier ist der relevante CodeSchienen, die keine Ember-Parameter von Modell

../models/invitation.js

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    email: DS.attr('string') 
}); 

../controllers/index.js

import Ember from 'ember'; 

export default Ember.Controller.extend({ 

    emailAddress: '', 

    actions: { 
    saveInvitation() { 
     const email = this.get('emailAddress'); 

     const newInvitation = this.store.createRecord('invitation', { 
     email: email, 
     }); 
     newInvitation.save(); 
    } 
    } 
}); 

Wenn ich die saveInvitation Aktion auslösen, meine Das Rails-Backend erhält keine Parameter. Die richtige Aktion/Steuerung empfängt die Anfrage, aber die einzigen Parameter sind {action: "create", controller: "invitations"}.

Fehle ich etwas? Sollten die Parameter die Einladung mit der E-Mail nicht enthalten?

Antwort

2

Es scheint, dass der Standard-Ember-Adapter einen Inhaltstyp application/vdn.api+json sendet, der von Rails nicht automatisch registriert wird und die JSON-Argumente analysiert.

Eine Lösung für dieses war die richtigen Mime-Typen unter Schienen registrieren

Config
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 

Siehe https://github.com/rails-api/active_model_serializers/issues/1027

0

Add/config folgende initializers/json_adapter.rb

ActiveSupport.on_load(:action_controller) do 
require 'active_model_serializers/register_jsonapi_renderer' 
end 

Dies kann hilft