Javascript Ember.js/Rails将关系发布到Rails
好的,我正在开发一个简单的Ember/Rails应用程序,我正在尝试在一个HTTP请求中发布一个hasMany关联。值得一提的是,我将Rails用于APIJavascript Ember.js/Rails将关系发布到Rails,javascript,ruby-on-rails,json,ember.js,coffeescript,Javascript,Ruby On Rails,Json,Ember.js,Coffeescript,好的,我正在开发一个简单的Ember/Rails应用程序,我正在尝试在一个HTTP请求中发布一个hasMany关联。值得一提的是,我将Rails用于API 余烬:1.4.0-beta.1+canary.011b67b8 余烬数据:1.0.0-beta.5+金丝雀d9ce2a53 车把:1.1.1 jQuery:1.10.2 发布模式 App.Release = DS.Model.extend name: DS.attr 'string' tracks: DS.hasMany 'tra
- 余烬:1.4.0-beta.1+canary.011b67b8
- 余烬数据:1.0.0-beta.5+金丝雀d9ce2a53
- 车把:1.1.1
- jQuery:1.10.2
App.Release = DS.Model.extend
name: DS.attr 'string'
tracks: DS.hasMany 'track', {embedded: 'true'}
一个“版本”有许多“曲目”
释放控制器
App.ReleasesNewController = Ember.ObjectController.extend
actions:{
save: ->
@content.save()
}
如何一次发布两首曲目和一个版本?我计划在我的Rails API中使用接受\u嵌套的\u属性\u:tracks。。。但是如果我能在我的开发控制台中看到这些轨迹,我会很高兴的。embedded'在ember data 1 beta中不再受支持。 检查此链接以了解如何使用嵌入创建子记录。更好地使用 检查此问题以了解有关以不同和更好的方式创建子记录的更多信息
我是这样工作的:
App.ReleaseSerializer = DS.RESTSerializer.extend
serializeHasMany: (record, json, relationship)->
key = relationship.key
hasManyRecords = Ember.get(record, key)
key = key+'_attributes'
if hasManyRecords && relationship.options.embedded == 'true'
json[key] = []
hasManyRecords.forEach (item, index)->
json[key].push(item.serialize())
else
@._super(record, json, relationship)
这可以很好地与配合使用:在Rails中为接受\u嵌套的\u属性。Rails希望在发行版下嵌套一组轨道模型,作为轨道\u属性
两个哥查斯:
- Rails不会对子模型使用创建操作,您必须在父模型的创建操作中对子模型执行任何操作
- 记住将Rails 4的孩子的参数列为白名单。这看起来像:
def release_params params.require(:release).permit(:name, tracks_attributes: [:name]) end
def release_params
params.require(:release).permit(:name, tracks_attributes: [:name])
end