1

has_many 関連付けのあるショップがあり、そこにアイテムを含めて、そのショップに属するアイテムが受け取られるようにします

 format.json { render json: {:shop => @shops.as_json(:include => :items)}}

今ではそのショップに属するすべてのアイテムを提供していますが、item_type = "accessories" など、特定の条件のアイテムを取得したいと考えています。どうすればこれを行うことができますか?私を助けてください。

編集

条件付きでインクルードの値を取得する方法に新しい質問を追加しました。

4

2 に答える 2

1

ActiveRecord でデータをフィルタリングしてから、フィルタリングされたデータに対して as_json を呼び出す必要があります。

次のようなことができます:

@shops = Shop.includes(:items).where("items.itemp_type = ?", 'accesories')
format.json { render json: { :shop => @shops.as_json(:include => :items) } }
于 2013-04-05T06:54:36.053 に答える
0

これを行う 1 つの方法は、レンダリングするオブジェクトでハッシュを作成し、それを render メソッドに渡すことです。そのようです:

respond_to do |format|
  format.json  { render :json => {:shops => @shops, 
                                  :items => @items }}
end

モデルがアクティブ レコードを介して関連付けられていない場合は、おそらくそれが最善の解決策です。

関連付けが存在する場合は、次の:include argument to the render callようにを渡すことができます。

respond_to do |format|
  format.json  { render :json => @shops.to_json(:include => [:items])}
end

このアプローチを採用する場合、上記のセクションで @items 変数を取得する必要はありません。Rails は変数から自動的にロードし@shopsます。

于 2013-04-05T06:58:56.813 に答える