Rails to_json静态方法:TypeError X不是符号

时间:2013-04-04 05:37:04

标签: ruby-on-rails json serialization static

我希望我的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对象

3 个答案:

答案 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}