我在Rails 4应用程序中使用gon gem将值从控制器传递到JavaScript。我在应用程序的其他部分中使用了gon,它可以正常工作,因此与gem是否正确加载无关。

我有以下型号:

class Person < ActiveRecord::Base
    has_many :addresses
  end

class Address < ActiveRecord::Base
  belongs_to :person
  belongs_to :city
end

class City < ActiveRecord::Base
  has_many :addresses
end


我分配查询结果是这样的:

gon.my_js_var = @my_instance_var = Address.includes(:person, :city).where("person_id = 1")


@my_instance_var具有我需要的所有值,例如@my_instance_var[i].city.name显示正确的值。但是,gon.my_js_var仅具有“地址”模型中的列,而没有“人”或“城市”中的列,例如gon.my_js_var[i].city is undefined

我在这里想念什么吗?还是我应该以不同的方式来做?

谢谢

最佳答案

尝试使用to_json,因为JSON可通过gon访问:

@my_instance_var = Address.includes(:person, :city).where("person_id = 1")
gon.my_js_var = @my_instance_var.to_json(include: [ :person, :city ])

10-08 08:04