5

重複の可能性:
Rails2.3.5のto_jsonをオーバーライドする

lib / response.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 に答える