我希望我的to_json包含一个来自控制器的静态方法。
class ApplicationController < ActionController::Base
def self.server_time
Time.now
end
end
我试过了两个:
o.to_json(:methods => ApplicationController.server_time)
并且
o.to_json(:include => ApplicationController.server_time)
但我得到 TypeError :
TypeError: 2013-04-04 08:33:31 +0300 is not a symbol
o是ActiveRecord对象
答案 0 :(得分:2)
ApplicationController.server_time.to_json
为我工作
答案 1 :(得分:2)
不知道你的语境中o
是什么,但你也可以:
[o, ApplicationController.server_time].to_json
或
{ApplicationController.server_time: o}.to_json
在json中包含时间
答案 2 :(得分:2)
如果您希望JSON像以前一样使用新密钥“time”,请执行以下操作:
o.as_json.merge({time:ApplicationController.server_time}).to_json
# => {time:123, id:1, name: 'name', ...}
您还可以使用时间键和对象的键:
{time: ApplicationController.server_time, object: o}.to_json
# => {time:123, object: {id:1, name: 'name', ...} }
感谢Rails的魔力,您不必在控制器中指定to_json
:
render json: o.as_json.merge({time:ApplicationController.server_time})
# or the other option
render json: {time: ApplicationController.server_time, object: o}