2010-08-24 70 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

相關問題