我需要覆盖“render json”,但我不需要为模型覆盖它,在模型中我知道我可以打开 ActiveRecord::Base 并覆盖 as_json 方法。但我的问题是当我有这样的事情时
class TestController < ApplicationController
def index
render json: { field: 'is a test' }
end
end
我的问题是因为我使用一个 gem,其中一些方法需要返回“渲染 json”,而这个 gem 没有集中于此的方法。我认为在 gem 的分支中进行重构,因为我可以覆盖集中式方法,但首先我想知道是否可以覆盖渲染。
您可以打开 ActionController::Base 类并重写那里的 render 方法。但是我不确定这是否是最好的想法,这取决于您遇到的实际问题,并且您没有向我们提供有关该问题的太多详细信息,即您期望得到什么以及您实际得到什么。
UPDATE
我可能会选择这样的东西:
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)