2

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

4

3 回答 3

2
ApplicationController.server_time.to_json

为我工作

于 2013-04-04T05:45:37.823 回答
2

不知道o你的上下文是什么,但你也可以:

[o, ApplicationController.server_time].to_json

或者

{ApplicationController.server_time: o}.to_json

在您的 json 中包含时间

于 2013-04-10T18:29:39.853 回答
2

如果您希望 JSON 像以前一样使用新的“时间”键,请执行以下操作:

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}
于 2013-04-15T10:53:12.980 回答