我正在开发一个只返回JSON的API。
所有异常/错误都由around_filter捕获,并从中呈现适当的JSON响应。
由于我想从我的操作返回的只是一个状态,并且所有错误都由around_filter处理,所以我所有操作的最后一行现在看起来像
render :json => {:message => {:status => :ok}}
有没有一种方法可以告诉rails在默认情况下始终渲染该行,这样我就不必将其添加到所有274628操作中?
删除所有模板和呈现语句。
# app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
rescue_from ActionView::MissingTemplate do |exception|
# This will not work for partials
render :json => {:message => {:status => :ok}}
end
end
# some method in the controller
class PostController < ApplicationController
respond_to :json, :html, :xml
def index
puts "index"
end
end
就我个人而言,我不会这么做。如果你真的有274628个操作,我会把你的应用程序分成更小的服务(我知道你在开玩笑):)。我只是喜欢显式地渲染,即使它更像是打字。此外,覆盖默认值会使您的应用程序更难解释,代码也不那么清晰。
我个人很喜欢葡萄API宝石的默认渲染设计。您可以在rails应用程序中安装Grape API。也许可以考虑一个更清洁的解决方案。