我to_json
在一个对象上使用该方法,并试图让:methods
参数起作用。我的模型(Drop)上有一个名为is_favorited_by_user?
. 此方法接受 的参数current_user
,然后检查该 drop 是否被用户收藏。如何通过该to_json
方法传递此参数。
render :json => @drops.to_json(:methods => :is_favorited_by_user?(current_user))
我to_json
在一个对象上使用该方法,并试图让:methods
参数起作用。我的模型(Drop)上有一个名为is_favorited_by_user?
. 此方法接受 的参数current_user
,然后检查该 drop 是否被用户收藏。如何通过该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”方法。(通常是根据您的数据库属性创建的。)
请参阅此处的示例,没有传递参数:
http://apidock.com/rails/ActiveRecord/Serialization/to_json
如果你想做一些自定义的事情,你需要创建一个方法来构建你想要的信息散列,然后将该散列转换为 json。