5

可能重复:
在 Rails 2.3.5 中覆盖 to_json

lib/responses.rb

module Responses
class Response
    def to_json
       JSON.pretty_generate(self)
    end
end

class ErrorResponse < Response
    def initialize(cause)
        self[:type]="Error"
        self[:casue]=cause

    end
end
class DataResponse < Response
    attr_accessor :data

end
end

这由控制器使用:

 response=Responses::DataResponse.new
 response.data=someData

 render :json => response

现在我wrong number of arguments (1 for 0)lib/responses.rb:3:in to_json. 为什么?没有参数传递给to_json隐式调用的render :json。那么我的错误在哪里?

4

1 回答 1

9

这是因为在 Rails 中,当您使用 json 进行渲染时,to_json 方法将接收选项。

你可能想做这样的事情:

def to_json(options = {})
   JSON.pretty_generate(self, options)
end
于 2012-07-22T11:35:48.707 回答