在我的Item控制器中,我希望在将模型对象呈现为JSON之前向其添加瞬态(即非持久)属性。Ruby on Rails:为JSON添加瞬态属性到对象的问题Serializaton
def show
@item = Item.find(params[:id])
@item.comment = "some comment"
render :json => @item
end
我Item类看起来是这样的:
class Item < ActiveRecord::Base
attr_accessor :comment
@comment
末
我的问题是,注释实例变量没有被在JSON呈现。在JSON输出中显示持久性的所有内容。我是否需要重写to_json方法才能使其工作?还是有更简单的方法来确保评论在JSON输出中呈现?
感谢您的帮助。
--------------更新
这是一个已经发展了藏袍建议的解决方案。重写to_json方法Item:
def to_json(options = {})
options[:methods] = :comment;
super(options)
end
想知道这是否与您的想法一致,Chubas。
看到这个类似的帖子http://stackoverflow.com/questions/2572284/override-to-json-in-rails-2-3-5/2574900 – Chubas 2010-08-25 16:20:08
又见......“你一般要单独留下to_json,所以你需要做的就是添加你自己的as_json实现,就像这样...“http://stackoverflow.com/questions/6892044/add-virtual-attribute-to-json-output – msanjay 2012-12-20 15:44:03