【问题标题】:JSONAPI strong params with Rails and Ember使用 Rails 和 Ember 的 JSONAPI 强参数
【发布时间】:2016-03-01 21:02:32
【问题描述】:

我将 Ember 与 ember-data 和 rails api 一起使用。我有一个工作正常的记录的 createRecord() 和 save()。用于在 rails 中创建记录的发布请求的网络选项卡中的有效负载如下所示:{data: {attributes: { foo: 'bar' } }

在 Rails 控制器中,我有像这样的强大参数:params.require(:data).require(:attributes).permit(:foo),它在一段时间内运行良好。现在当我发送请求时,rails 说param is missing or the value is empty: data。如果我查看浏览器中的网络选项卡,请求的有效负载仍然与上述相同。如果我 puts params 它只显示 {"controller": "api/v1/answers", "action": "create"} 而根本不显示数据负载。

rails 现在没有从 ember 获取正确的参数有什么原因吗?我确实尝试向我正在尝试创建的模型添加关联,这是它开始失败的时候。但是,我回滚到它工作的时候,但它不再工作了。

【问题讨论】:

  • 您确定 ember 正在发送参数吗?
  • 在发送请求下的开发工具的网络选项卡中,它显示有效负载为{data: {attributes: { foo: 'bar' } } },所以这不意味着它被正确发送了吗?或者还有什么要找的?
  • 嘿,我确实有同样的问题。 Ember 在 web 检查器中显示了一些参数,但无法在 Rails 端获取它们......当我使用带有 :json_api 的最后一个版本的 ActiveModel::Serializer 时出现了。
  • @le_Daf 在 rails api 中我忘记更改 MIME 类型以接受 application/vnd.api+json

标签: ruby-on-rails-4 ember-data strong-parameters


【解决方案1】:

我通过进入 rails api 中的 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

【讨论】:

  • 谢谢很多人! :) 更多信息在这里github.com/rails-api/active_model_serializers/issues/…。我也在阅读控制器中的参数,就像这里github.com/Deovandski/Fakktion/blob/…
  • 使用最新版本的 AMS,我认为您不再需要此初始化程序。在您的控制器中,您可以执行 ActiveModelSerializers::Deserialization.jsonapi_parse!(params) (确保在 config/wrap_parameters.rb 中启用了根元素)
  • 我在 ams 0.10.6 上,在看到参数被发送到控制器之前,我仍然必须添加这个 mime 类型配置。当然,我还是得用jsonapi_parse来解析数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-24
  • 2015-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-20
  • 2018-11-10
相关资源
最近更新 更多