Ruby on rails 在Ember.js和Rails 4中发布父\u id会导致未经允许的参数错误。删除还是忽略?

Ruby on rails 在Ember.js和Rails 4中发布父\u id会导致未经允许的参数错误。删除还是忽略?,ruby-on-rails,ember.js,ruby-on-rails-4,strong-parameters,Ruby On Rails,Ember.js,Ruby On Rails 4,Strong Parameters,在ember.js(1.2)中,我试图发布对子模型的更改,但ember.js在帖子中包含了父id。但是,对于我的Rails 4控制器,parent_id不是“允许的”参数,因此POST失败,出现以下错误 Processing by ThingsController#update as JSON Parameters: {"thing"=>{"title"=>"Test","location"=>"Baltimore","parent_id"=>nil} Unpermi

在ember.js(1.2)中,我试图发布对子模型的更改,但ember.js在帖子中包含了父id。但是,对于我的Rails 4控制器,parent_id不是“允许的”参数,因此POST失败,出现以下错误

Processing by ThingsController#update as JSON
  Parameters: {"thing"=>{"title"=>"Test","location"=>"Baltimore","parent_id"=>nil}
Unpermitted parameters: parent_id

由于我不想将
parent\u id
作为此模型的允许参数,如何将其从POST中删除?

parent\u id
的值保留在
POST
参数中不会导致任何问题,因此您可以忽略它

如果您想澄清这一点(并且不让其他开发人员感到困惑),您应该编辑正在执行
POST
的表单,并删除包含
parent\u id
的表单字段


如果您发布视图代码,我可以建议如何执行后者。

我可以通过删除子类中对父类的引用来解决此问题。这在我的应用程序中是不必要的,因为我经常从父级访问子级,但我从不从子级访问父级。换言之,新模型看起来像:

App.Thing = DS.Model.extend({

// commented out -> parent: DS.belongsTo('App.ParentThing'),

  title: DS.attr('String'),
  location: DS.attr('String')
});

我在
createdAt
属性中遇到了同样的问题。通过重写ApplicationSerializer(或者在您的情况下,ThingSerializer)可以轻松解决此问题:


谢谢你的回答。当然,您是对的,只是很多表单信息隐藏在ember.js中。今天早上,我通过从子模型中删除
parent:DS.belongsTo('App.ParentModel')
解决了这个问题。
App.ApplicationSerializer = DS.ActiveModelSerializer.extend
  serialize: (record, options) ->
    json = @_super(record, options)
    delete json.created_at
    json