2013-07-19 32 views
0

如何在不满足控制器过滤条件时设置HTTP状态代码?如何在过滤器上设置HTTP状态码?

例如,在下面的控制器

class FooController < ApplicationController 
    before_filter :foo_filter 

    def action 
    respond_to :html 
    end 

    private 

    def foo_filter 
    return false unless some_conditions 
    end 
end 

我想与some_conditions为假调用动作时的HTTP状态代码设置为410。我怎样才能做到这一点?

我有两个应用程序正在运行,一个在rails 3中,另一个在rails 2中,所以我对每个rails版本的答案感兴趣,如果不同。

回答

2
class FooController < ApplicationController 
    before_filter :foo_filter 

    def action 
    respond_to :html 
    end 

    private 

    def foo_filter 
    head :gone unless some_conditions 
    end 
end 
+0

感谢您的回答,但是这打破了'DRY'原则,因为我必须为使用此过滤器的每个操作添加'if @ gone'测试。 – fotanus

+0

@fotanus你能解释一下上面的评论吗? –

+1

@MichaelSzyndel他编辑了他的答案以解决问题。现在很好,恕我直言 – fotanus

相关问题