Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.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 在“您想要”时使用“过滤语法”之前;除「;控制员;abc";_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 在“您想要”时使用“过滤语法”之前;除「;控制员;abc";

Ruby on rails 在“您想要”时使用“过滤语法”之前;除「;控制员;abc";,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,在Rails中,当您想要“除了”控制器“abc”时,什么是before_过滤器语法 例如,如果我想说: before_filter :login_required :except => ["-name of controller-"] 背景-只需要在整个应用程序中进行基本身份验证,但实际处理用户身份验证的控制器除外。…您可以在控制器中放置以下行,其中不应执行之前的过滤器: skip_before_filter :login_required 您甚至可以指定使用:only和:except

在Rails中,当您想要“除了”控制器“abc”时,什么是before_过滤器语法

例如,如果我想说:

before_filter :login_required :except => ["-name of controller-"]

背景-只需要在整个应用程序中进行基本身份验证,但实际处理用户身份验证的控制器除外。…

您可以在控制器中放置以下行,其中不应执行
之前的过滤器

skip_before_filter :login_required
您甚至可以指定使用
:only
:except
选项忽略
前过滤器的方法:

skip_before_filter :login_required, :only => [:login]
举个例子



编辑:在Rails 4中,
before\u filter
before\u action
混在一起,而
skip\u before\u filter
也与
skip\u before\u action
混在一起

before_filter :login_required, :except => ["-name of the action-"]

看看。

我建议不要使用控制器名称,而是利用控制器从其父级继承其过滤器这一事实。所以我推荐如下:

# app/controllers/application_controller.rb
class ApplicationController
  # no filters here
end

# app/controllers/authenticated_controller.rb
class AuthenticatedController < ApplicationController
  before_filter :login_required
end

# app/controllers/some_other_controller.rb
class SomeOtherController < AuthenticatedController
  # inherits the before_filter from AuthenticatedController
  # use this for most of your other controllers
end

# app/controllers/unauthenticated_controller.rb
class UnauthenticatedController < ApplicationController
  # no filters, since this inherits directly from ApplicationController
  # use this for the controller that you don't want to check login on
end
#app/controllers/application_controller.rb
类应用程序控制器
#这里没有过滤器
结束
#app/controllers/authenticated_controller.rb
类AuthenticatedController<应用程序控制器
筛选前:需要登录
结束
#app/controllers/some_other_controller.rb
类SomeOtherController

这意味着控制器知道他们是否应该检查登录,而不是有一个(可能很脆弱的)姓名列表。

@Thrabbit很乐意提供帮助!我认为,如果您不想使用继承,也可以使用模块包含来实现这一点,但我还没有尝试过。