2016-03-01 4 views
3

Я использую Ember с данными ember-data и rails api. У меня была запись createRecord() и save() для записи, которая работала нормально. Полезная нагрузка на вкладке сети для почтового запроса для создания записи в рельсах выглядит следующим образом: {data: {attributes: { foo: 'bar' } }.Сильные параметры JSONAPI с Rails и Ember

В контроллере rails у меня есть сильные параметры, такие как: params.require(:data).require(:attributes).permit(:foo), который работал нормально на некоторое время. Теперь, когда я отправляю запрос, рельсы говорят, что param is missing or the value is empty: data. Если я посмотрю на вкладке сети в браузере, полезная нагрузка для запроса по-прежнему выглядит так же, как указано выше. Если I puts params показывает только {"controller": "api/v1/answers", "action": "create"} и вообще не показывает полезную нагрузку данных.

Есть ли причина, по которой рельсы не собираются на правильные параметры от ember? Я попытался добавить ассоциацию к модели, которую я пытаюсь создать, а это когда она начала сбой. Тем не менее, я вернулся к тому, когда он работал, но он больше не работает.

+0

Вы уверены, что уголек посылает Params? – TheGeorgeous

+0

На вкладке «Сеть» в инструментах «dev» под отправленным отправлением она показывает полезную нагрузку как «{data: {attributes: {foo: 'bar'}}}', поэтому это не значит, что она правильно отправляется? Или есть что-то еще, чтобы искать? – mikeLspohn

+0

Эй, у меня точно такая же проблема. Ember показывает некоторые параметры в веб-инспекторе, но не может получить их на стороне Rails ... Это просто появилось, когда я использовал последнюю версию ActiveModel :: Serializer с помощью: json_api. – Bachet

ответ

10

Я исправил это, перейдя в файл config/initializers/mime_types.rb в апи рельсов и изменение файла выглядеть следующим образом:

api_mime_type = %W(
    application/vnd.api+json 
    text/x-json 
    application/json 
) 

Mime::Type.unregister :json 
Mime::Type.register 'application/json', :json, api_mime_type 
+0

Thx много человек! :) Больше информации здесь https://github.com/rails-api/active_model_serializers/issues/1027#issuecomment-126543577. Также я читаю параметры в контроллере, например, здесь https://github.com/Deovandski/Fakktion/blob/f152e9e3e99ee01146fcfc9277b38b7dda8026e7/app/controllers/api/v1/categories_controller.rb#L39 – Bachet

+1

С последней версией AMS я не подумайте, что вам нужен этот инициализатор. В вашем контроллере вы можете просто сделать ActiveModelSerializers :: Deserialization.jsonapi_parse! (Params) (убедитесь, что в config/wrap_parameters.rb вы включили корневые элементы) – rmcsharry

+1

Я нахожусь на ams 0.10.6, и мне все равно пришлось добавить эту конфигурацию типа mime прежде чем я увидела, что параметры отправляются на контроллер вообще. Конечно, мне все равно придется использовать jsonapi_parse для анализа данных. – freedrull