0

我有一个带有 Province.rb 模型的 Rails 应用程序,该模型与 City.rb 模型具有 has_many 关系。在省控制器的显示动作中,我这样做

@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调用provincial.cities了吗?

无法通过省份对象访问城市,我尝试showProvince在路由器中的方法中根据省份ID查询城市,如下所示

  self.provinces = app.collections.provinces.get(id); 
  self.cities = app.collections.cities.where({province_id: id}).fetch() //doesn't work

但我不能在指定后调用 fetch where。此外,如果我停止获取,并以这种方式尝试,我无法在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}) );

如果我能够检索它们,我将如何包括该省的城市?我应该尝试将它们与省合并,还是可以以另一种方式将它们包括在内?

4

1 回答 1

0

因为我使用的是主动模型序列化器,所以我必须在序列化器中声明关系,然后子城市在省对象上可用

class ProvinceSerializer < ActiveModel::Serializer
  attributes :id, :name

  has_many :cities
end

无需尝试做任何这些

self.cities = app.collections.cities.where({province_id: id}).fetch() //doesn't work
于 2013-09-11T20:49:03.063 回答