我有一个拥有所有者方法的模型对象数组。这个方法需要一个参数传递给它才能工作。我需要将模型对象序列化为json并包含所有者方法的值。Rails to_json:有参数的方法
我会如何去传递参数为to_json
方法我目前使用的
objects.to_json(:methods => :owner)
包括所有者的方法,但因为我不是传递参数这是行不通的。
我有一个拥有所有者方法的模型对象数组。这个方法需要一个参数传递给它才能工作。我需要将模型对象序列化为json并包含所有者方法的值。Rails to_json:有参数的方法
我会如何去传递参数为to_json
方法我目前使用的
objects.to_json(:methods => :owner)
包括所有者的方法,但因为我不是传递参数这是行不通的。
注意:评论应用到Rails 2.3,没有试过瓦特/ Rails的3
我不相信你可以做到这一点瓦特/ to_json的工作方式,所以我觉得你有两个选择:
1.通过调用一个方法来将正确的值存储在'owner'方法在to_json调用期间读取的变量中,从而准备对象。
2.Overriding as_json在你的模型:
def as_json(options = {})
json = super(options)
json['owner'] = owner(options[:param_for_owner])
json
end
然后在您的通话to_json只是传递:param_for_owner:
objects.to_json(:param_for_owner => 'foo')
注意,如果你注入你的价值将取决于你的ActiveRecord :: Base.include_root_in_json已配置。
这不完全美丽,但它的作品。 – 2011-08-09 15:32:08
你是如何使用JSON的?为什么你不能传递参数给#to_json? – 2011-02-28 04:45:15