2011-06-03 41 views
1

我正在处理仅返回JSON的API。Rails:默认呈现相同的JSON片段

所有异常/错误都被around_filter捕获,并且从那里呈现适当的JSON响应。

由于所有我想从我的行动回报是一个状态,所有错误都被around_filter处理,我的一切行动的最后一行现在看起来像

render :json => {:message => {:status => :ok}}

有没有一种办法告诉轨道总是默认渲染该行,以便我不必将其添加到所有我的274628操作?

+0

isnt状态已经被默认渲染了吗?它应该是 – corroded 2011-06-03 09:20:41

+0

如果我删除渲染线,我得到'失踪模板jobpostings /销毁...'(因为没有模板的行动,为什么会) - 我很肯定你必须渲染*东西* – 2011-06-03 12:13:29

+0

我的意思是你不需要渲染状态。但我看到你要渲染摧毁,所以你需要渲染一个好的。如果是另一种返回某种东西的方法,则不需要该状态。像render:json => @mymodel – corroded 2011-06-03 12:40:25

回答

0

删除您的所有模板和渲染语句。

# 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 

就我个人而言,我不会这样做。如果你真的有274,628行动,我会把你的应用分成更小的服务(我知道你在开玩笑):)。我只是喜欢对渲染进行明确的描述,即使它是更多的输入。重写默认值会让你的应用程序难以解释,代码也不太清晰。

我个人喜欢葡萄API gem的默认渲染设计。您可以在Rails应用程序中挂载Grape API。也许看看这个更清洁的解决方案。