0

City.rb モデルと has_many 関係を持つ Province.rb モデルを使用した Rails アプリがあります。Province コントローラーの 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

しかし、 を指定してから fetch を呼び出すことはできませんwherewhereまた、フェッチを中断してこの方法で試してみると、メソッドで成功コールバックを使用できなかった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 関連付けを照会する方法は?

州に対応する都市レコードを取得できたと仮定すると、2 つを一緒にいくつかに挿入する方法がわかりません。

this.showView( '#main', new app.Views.ProvinceView({model:self.province}) );

それらを取得できた場合、その州の都市をどのように含めますか? それらをプロヴィンスに統合する必要がありますか、それとも別の方法で含めることができますか?

4

1 に答える 1

0

私は Active Model Serializer を使用しているため、シリアライザーで関係を宣言する必要があり、子の都市は Province オブジェクトで利用可能でした。

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 に答える