我有一个简单的Ember 2.4应用程序。这是相关代码
../模型/ invitation.js
import DS from 'ember-data';
export default DS.Model.extend({
email: DS.attr('string')
});
../控制器/ 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();
}
}
});
当我触发saveInvitation
操作时,我的Rails后端不会收到任何参数。正确的操作/控制器接收请求,但唯一的参数是{action: "create", controller: "invitations"}
。
我错过了什么吗?不应该参数包括电子邮件邀请吗?
答案 0 :(得分:2)
似乎默认的Ember适配器发送的内容类型application/vdn.api+json
不会被Rails自动注册并解析JSON参数。
对此的修复是在rails config
下注册正确的mime类型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
请参阅https://github.com/rails-api/active_model_serializers/issues/1027
答案 1 :(得分:0)
将以下内容添加到config / initializers / json_adapter.rb
ActiveSupport.on_load(:action_controller) do
require 'active_model_serializers/register_jsonapi_renderer'
end
这可能会有所帮助