我正在尝试在respond_to JSON哈希中包含虚拟属性/方法。
模型(employee.rb)
attr_reader :my_method
def my_method
return "foobar"
end
控制器(employees_controller.rb)
respond_to :json
def index
@employees = Employee.all
respond_with(:data => @employees, :total => Employee.all.count)
end
重要的是,我将“数据”作为“雇员”集合的json根,并在散列中包含“total”。这很有效,并返回所有员工和总价值的良好JSON结果。
我的问题是:如何在JSON响应中为员工哈希中的每个员工包含虚拟属性“my_method”?
谢谢你的时间!
答案 0 :(得分:14)
这对我有用。
<强> Employee.rb 强>
def as_json(options={})
super.as_json(options).merge({:my_method => my_method})
end
感谢cmason指出我正确的方向。欢迎任何其他解决方案。
答案 1 :(得分:3)
在Rails 3中,可以使用以下
@yourmodel.to_json(methods: ['virtual_attr1', 'virtual_attr2']
答案 2 :(得分:1)
在模型中覆盖as_json应该可以解决问题:
def as_json(options={})
{ :methods=>[:my_method] }.merge(options)
end