我有一个带有省.rb模型的Rails应用程序,该模型与City.rb模型具有has_many关系。在省控制器的show动作中,我这样做
@province= @province.cities
render json: @province, root: false
能够在渲染时从省内获取城市。这对Rails来说很容易,但我正在使用Backbone中的JSON数据。当我在Backbone中渲染省份对象时,它没有可用的城市
_changing: false
_events: Object
_pending: false
_previousAttributes: Object
attributes: Object
id: 14
name: "Ontario"
__proto__: Object
changed: Object
cid: "c501"
collection: child
id: 14
__proto__: Surrogate
问题1.有没有办法让省内的城市可用?所以我可以用javascript调用province.cities吗?
无法通过省份对象访问城市,我尝试根据路由器中的showProvince
方法中的省ID来查询城市
self.provinces = app.collections.provinces.get(id);
self.cities = app.collections.cities.where({province_id: id}).fetch() //doesn't work
但是在指定where
后我无法调用fetch。另外,如果我停止提取,并以这种方式尝试,我无法在where
方法上使用成功回调,因此,self.cities
在console.log中未定义,因为代码在查询结束之前已经开始了。
self.cities = app.collections.cities.where({province_id: id}, {
success: function(){
no success callback, how to process data
}
});
console.log(self.cities)//undefined
问题2:如何使用父ID查询has_many关联?
假设我能够检索对应于该省的城市记录,我不知道如何将两者合并为几个
this.showView( '#main', new app.Views.ProvinceView({model:self.province}) );
如果能够检索到该省,我将如何包含该省的城市?我应该尝试将它们与省合并,还是可以用其他方式包含它们?
答案 0 :(得分:0)
因为我正在使用Active Model Serializer,所以我必须在序列化程序中声明关系,然后在省对象上可以使用子城市
class ProvinceSerializer < ActiveModel::Serializer
attributes :id, :name
has_many :cities
end
无需尝试执行此任何操作
self.cities = app.collections.cities.where({province_id: id}).fetch() //doesn't work