Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 前\u筛选器未正确从父控制器继承?_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 3 前\u筛选器未正确从父控制器继承?

Ruby on rails 3 前\u筛选器未正确从父控制器继承?,ruby-on-rails-3,Ruby On Rails 3,如果这是一个愚蠢的问题,很抱歉,但我无法让我的过滤器继承Rails3文档所说的方式 具体而言,我有一个管理员控制器,它是通过以下方式生成的: rails generate controller admin 我只向管理控制器添加了一个操作,即before过滤器和private过滤器方法 class AdminController < ApplicationController before_filter require_admin_creds def index end

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

具体而言,我有一个管理员控制器,它是通过以下方式生成的:

rails generate controller admin
我只向管理控制器添加了一个操作,即before过滤器和private过滤器方法

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
虽然我的管理员索引确实获得了过滤器,但管理员/模型索引(或任何其他操作)没有。这里发生了什么我必须排除的事情


提前感谢。

将require\u admin\u creds设置为受保护的方法,而不是私有的。

您是否更改了:

Admin::ModelController < ApplicationController 
Admin::ModelController

Admin::ModelController
?


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

请仔细检查语法。你有:

before_filter require_admin_creds
但我认为应该是:

before_filter :require_admin_creds

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

我很确定before\u过滤器将只应用于定义的特定控制器。你认为应该从哪里继承?另外,生成admin/model是在admin命名空间中创建一个控制器。。。这不是继承。还不能对其他帖子发表评论,所以对肖恩·希尔斯说:是的,继承之前的过滤器。是的,我现在看到了。他仍然需要将Admin::ModelController更改为从AdminController继承,因为简单地将ModelController放置到Admin命名空间中并不会创建继承。请看下面我的答案。谢谢各位,你们两方面都是对的。我感谢新手的帮助。
before_filter require_admin_creds
before_filter :require_admin_creds