частичное в Jbuilder не работает с ассоциациями

Я пишу частичные файлы, используя jbuilder для возврата данных json. У меня есть модуль, в котором я возвращаю данные для каждой записи в методе show и все записи в index. Но все записи здесь не работают, что я сделал в своем методе show в контроллере.

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

там написано undefined @signal.user.first_name. Он проникает внутрь частично, но не может достичь ассоциаций. Я проверил журналы ... но ничего особенно полезного ... застрял с ним долгое время ... помощь приветствуется


person JNI_OnLoad    schedule 31.01.2014    source источник


Ответы (1)


Вы должны изменить свою часть, чтобы использовать локальную переменную.

Например

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

in index.json.jbuilder

json.partial! partial: 'signals/signal', collection: @signals, as: :signal
person lazywei    schedule 11.02.2014