2012-02-29 5 views
0

、私は以下の使用している場合:レール関連テーブルから3ショー

def index 
    respond_with(@market.events) do |format| 
     format.js {render :json => @market.events, :callback => params[:callback]} 
    end 
end 

を私が予想される応答を取得します。イベントは市場でネストされたリソースです。 しかし、関連するテーブルにあるイベントに関連付けられたアセットも返す必要があります。私は、次しようとした場合:

respond_with(@market.events.joins @market.events.assets) do |format| 

を私は#ActiveRecordのための未定義のメソッド `資産を取得::関連:0x1088215a0。私のイベントのショーページで、私はasset.asset.urlを行うことができ、それが表示されます。

ここで私が間違っていたアイデアはありますか?

答えて

0

は、複数のイベントがあり、そしてあなたがコレクションのassetsを呼び出そうとしているイベント、つまり、コレクション内の各要素はassetsを持っているものの、assetsを持っていない多くのイベントのセット。

イベントのアセット(単数)を取得したいと思うので、複数のアセットを返すので、実際にここで達成したいことはわかりません。

@market.events.map(&:assets).flatten # If event has many assets 
@market.events.map(&:asset)   # If event has one asset 
+0

レンダリング:json => @ market.events.map(&:assets).flattenが動作します。私はコレクションのあなたの説明が沈んだまで、最初にメソッドで応答に入れていました。ありがとう、アンドリュー – h8windows

+0

バマー。私は再び見て、それは資産を返すが、イベントのデータは消えている:( – h8windows

+0

レンダリング:json => @ market.events + @ market.events.map(&:assets).flattenはかなり醜いjsonオブジェクトを返します。私はそれを解析することができるはずです。 – h8windows

0

あなたは熱心な読み込みを試みましたか? @market.events.includes(:assets)では、資産も必要です。

+0

「@marketsvents」が「assets」に応答しないという事実は変更されません。すべてのイベントのすべてのアセットを取得することができます。 –

+0

'@ market.events'はコレクションです。メンバーは '@ market.events.first.assets'のように' assets'に応答します。あなたはそれの後でそれを反復することができます。 – ksol

+0

&:assetsを使用すると、エラーはなくなりますが、assetsテーブルから返されるデータはありません。 – h8windows

関連する問題