2010-08-24 38 views
1

我需要做的API版本检查,所以我已经实现支票在我的控制方法,像渲染:执行从一个应用程序控制器的方法

if request.header["api_version"] != 1 
    respond_to do |format| 
    format.json {render :json => expiredMessage} 
    end 
    return 
end 

工作得很好,我在返回控制语句所以Rails不会抱怨双渲染。我尝试将它们作为before_filter作为应用程序控制器方法进行干预,但后来我从Rails中得到了多个呈现投诉。看起来范围已经改变,使得控制语句中的“返回”不再从原始控制器方法返回?

我想知道如何从应用程序控制器方法进行渲染,或者如果有更好的方法,我该如何实现此功能?谢谢!

回答

2

在每个控制器动作之前调用过滤器之前,从它返回只允许该动作继续。我会使用例外。 (以下代码未经测试)

class FrontEndController < ApplicationController 
    rescue_from Exception do |exception| 
    if exception.is_a? ExpiredException 
     respond_to do |format| 
     format.json {render :json => expiredMessage} 
     return 
     end 
    end 
    end 

    before_filter :check_api_version 
    def check_api_version 
    raise ExpiredException if request.header["api_version"] != 1 
    end 
end 

class ExpiredException < Exception; end 
+0

啊很酷,谢谢 – ambertch 2010-08-25 19:22:19

相关问题