我在对象上使用to_json
方法,并尝试使:methods
参数起作用。我的模型(Drop)上有一个名为is_favorited_by_user?
的方法。此方法接受current_user
的参数,然后检查用户是否收到了丢弃。如何通过to_json
方法传递此参数。
render :json => @drops.to_json(:methods => :is_favorited_by_user?(current_user))
答案 0 :(得分:44)
您可以在模型中添加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?)
答案 1 :(得分:4)
方法to_json
所采用的并不是那些采用参数的方法,而只是“getter”方法。 (通常是根据您的数据库属性创建的。)
请参阅此处的示例,无传递参数:
http://apidock.com/rails/ActiveRecord/Serialization/to_json
如果你想做一些自定义的事情,你需要创建一个方法来构建你想要的信息的哈希值,然后将那个哈希值转换为json。