2014-01-31 35 views
4

我正在使用jbuilder編寫partials來返回json數據。我有一個模塊,我在show方法中返回每條記錄的數據,並在索引中記錄所有記錄。但是,所有記錄的東西不工作 這裏我做了什麼 我的節目在控制器部分在Jbuilder中不與協會合作

def index 
@signals = Signal.all.paginate(:page => params[:page], :per_page => 10) 

end 

def show 
@signal = Signal.find(params[:id]) 
end 

下面的方法是我的部分_signal.json_jbuilder

json.(@signal, :id, :power) 
json.user do 
json.first_name @signal.user.first_name 
json.last_name @signal.user.last_name 
json.email @signal.user.email 
end 
json.location @signal.signal_location, :latitude, :longitude 
json.device do 
json.model @signal.device.phonemodel 
json.os_version @signal.device.os_version 
json.os_type @signal.device.os_type 
json.sim_card_provider @signal.device.sim_card_provider 
end 

現在我在我的show.json使用該部分.jbuilder和index.json.jbuilder 這裏是我的show.json.jbuilder

json.partial! 'signals/signal', signal: :@signal 

它工作正常,但當我使用這個部分在index.json.jbuilder 這裏是我的index.json.jbuilder

json.partial! partial: 'signals/signal', collection: @signals, as: :signal 

它說未定義@ signal.user.first_name。它達到部分內部但不能達到協會。我檢查了日誌..但沒有什麼非常有用的... 卡住它,因爲長...幫助讚賞

回答

10

你應該改變你的局部使用局部變量。

例如

json.(signal, :id, :power) 
json.user do 
    json.first_name signal.user.first_name 
    json.last_name signal.user.last_name 
    json.email signal.user.email 
end 
json.location signal.signal_location, :latitude, :longitude 

而在show.json.jbuilder

json.partial! 'signals/signal', signal: @signal 

index.json.jbuilder

json.partial! partial: 'signals/signal', collection: @signals, as: :signal