在没有模型对象的Rails 4中覆盖render:json

ape*_*rez 3 ruby json ruby-on-rails render ruby-on-rails-4

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

class TestController < ApplicationController

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

end
Run Code Online (Sandbox Code Playgroud)

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

Bro*_*tse 5

您可以打开ActionController :: Base类并在那里重写render方法。但是,我不确定这是否是最好的主意,这取决于您遇到的实际麻烦,而您没有向我们提供有关该问题的太多详细信息,即您希望得到什么以及您实际上得到了什么。

更新

我可能会喜欢:

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
Run Code Online (Sandbox Code Playgroud)