before_filter没有正确地从父控制器继承?

时间:2011-01-02 03:10:04

标签: ruby-on-rails-3

很抱歉,如果这可能是一个愚蠢的问题,但我无法让我的过滤器继承Rails 3文档所说的方式。

具体来说,我有一个通过以下方式生成的管理员控制器:

rails generate controller admin

我只向管理员控制器添加了一个操作,前一个过滤器&私有过滤方法

class AdminController < ApplicationController

  before_filter require_admin_creds

  def index
  end

private

  def require_admin_creds
    unless current_user && current_user.admin?
        flash[:error] = ...
        redirect_to ....
    end
  end
end

接下来我在admin部分下创建了我的嵌套资源:

rails generate scaffold admin/model

虽然我的管理员索引确实正在获取过滤器,但管理员/模型索引(或任何其他操作)却没有。我必须排除在幕后发生的事情?

提前致谢。

3 个答案:

答案 0 :(得分:4)

使require_admin_creds成为受保护的方法,而非私有。

答案 1 :(得分:1)

你有没改变:

Admin::ModelController < ApplicationController 

Admin::ModelController < AdminController

这会创建继承,而不是将模型控制器放入admin命名空间。

答案 2 :(得分:0)

仔细检查您的语法。你有:

before_filter require_admin_creds

但我认为应该是:

before_filter :require_admin_creds

使用符号而不是变量/方法名称。