我正在使用gon
gem 来访问前端的模型对象。所以在我的控制器中我有这样的东西:
gon.items = @items
这不是一个真正的gon
问题,基本上gon.items
只是一个数组,@items
其中每个数组对象n
都具有 item 的所有属性n
,就像我们要做的一样@items[n].inspect
我意识到我想构建一个新的属性,它是前端的助手,所以我添加了这个属性,我们就说helper_attr
为attr_accessor
on Class Item
。现在在控制器中,我正在构建它:
gon.items = @items
gon.items.each do |item|
item.helper_attr = ......
end
puts gon.items.map { |i| i.helper_attr }
我注意到在控制器中,puts
正确显示helper_attr
确实已正确构建并且可用。但是在前端gon.items
没有属性helper_attr
。
有没有办法让它显示,而不必做笨重的手动构建?
# manual building example, instead of gon.items = @items, would do something like
gon.items = []
@items.each do |item|
built_item = {}
Item.attribute_names.each do |attr_n|
built_item[attr_n] = item.send(attr_n)
end
built_item["#{helper_attr}"] = .....
gon.items << built_item
end