Ruby to_json:方法参数
我在一个对象上使用to_json
方法,并试图让:methods
参数起作用。 我的模型(Drop)上有一个名为is_favorited_by_user?
。 此方法接受current_user
的参数,然后检查该下拉是否被用户collections。 如何通过to_json
方法传递此参数。
render :json => @drops.to_json(:methods => :is_favorited_by_user?(current_user))
您可以将current_user
属性添加到模型中,并在执行to_json
之前设置它
attr_accessor :current_user def is_favorited_by_user?(user=nil) user ||= current_user # rest of your code end @drops.current_user = current_user render :json => @drops.to_json(:methods => :is_favorited_by_user?)
to_json
采用的方法不是采用参数的方法,而只是“getter”方法。 (通常是基于db属性创建的。)
看这里的例子,没有传递参数:
http://apidock.com/rails/ActiveRecord/Serialization/to_json
如果你想做一些自定义的事情,你需要创建一个方法来构建你想要的信息的哈希,然后将该哈希转换为json。