【问题标题】:partial in Jbuilder is not working with associationsJbuilder 中的 partial 不适用于关联
【发布时间】:2014-02-23 19:13:38
【问题描述】:

我正在使用 jbuilder 编写部分以返回 json 数据。我有一个模块,我在 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

上面写着未定义的@signal.user.first_name。它到达内部部分但无法到达关联。我检查了日志..但没有什么很有帮助的... 长期以来一直坚持...帮助表示赞赏

【问题讨论】:

    标签: ruby-on-rails json partial-views jbuilder


    【解决方案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
    

    index.json.jbuilder

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

    【讨论】:

      猜你喜欢
      • 2014-03-02
      • 2020-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多