3

我需要覆盖“render json”,但我不需要为模型覆盖它,在模型中我知道我可以打开 ActiveRecord::Base 并覆盖 as_json 方法。但我的问题是当我有这样的事情时

class TestController < ApplicationController

def index
   render json: { field: 'is a test' }
end

end

我的问题是因为我使用了一个 gem,其中一些方法我需要返回“render json”,而这个 gem 没有为此集中的方法。我认为在 gem 的分支中并重构它,因为我可以覆盖集中式方法,但首先我想知道是否有可能覆盖渲染。

4

1 回答 1

5

您可以在那里打开 ActionController::Base 类并覆盖渲染方法。但是我不确定这是否是最好的主意,这取决于您遇到的实际问题,并且您没有向我们提供有关该问题的太多细节,即您希望得到什么以及您实际得到什么。

更新

我可能会喜欢这样的东西:

class ActionController::Base
  def render *args
    options = args.extract_options!
    if options[:json]
      \\ do whatever you need here
    end
    args << options
    super *args
  end
end
于 2013-11-15T09:57:17.833 回答