在我的Rails应用程序中有很多控制器,并且在不同控制器中的某些操作之前,我需要使用before_filter
。之前的过滤器将执行所有这些操作的相同代码。是否有干净的DRY方式(例如application_controller
)来指定应该运行此操作的列表before_filter
?我试图在所有控制器(9)中使用before_filer
,但由于它是相同的代码,因此看起来如此重复。在Ruby on Rails 4中过滤大量操作之前运行
回答
为什么不是ApplicationController
?如果您在应用程序控制器中定义了任何before_filter
,那么它将在每个请求中执行。
现在你说它看起来是重复性的,但实际上并没有。提及before_filter
application_controller.rb
实际上代表DRY AKA,您不必在其他地方指定before_filter
。
当然,并不是所有的9个控制器会得到在同一时间,以便ApplicationController
执行是首选的方式
class ApplicationController < ActionController::Base
...
before_filter :pre_execute_action
...
end
class MyController < ApplicationController
...
skip_before_filter :pre_execute_action, except: [:methods_for_which_it_should_execute]
...
end
试试上面的代码作为参考
问题是,如果我把它放在application_controller中,它会在ALL动作之前执行。我希望它只能执行大约20%的操作,而不是所有的操作。我有大约70个动作,我希望before_filter只在12个动作 – anyavacy
之前被执行,因此你可以使用'skip_before_filter:method_defined_in_application_controller:[:methods_for_which_it_should_execute]'现在它只会运行这20%的动作。你必须在需要执行某些方法的控制器中定义它 – Kushal
@anyavacy我编辑了我的答案 – Kushal
- 1. Ruby on Rails:2.3.8,过滤器自定义之前不工作?
- 2. Ruby on Rails - 过滤@变量在登录之间持续存在
- 3. Ruby on Rails 4中的Bootstrap-sass不会执行任何操作
- 4. 在Ruby on Rails中运行另一个控制器操作
- 5. 过滤结果 - Ruby on Rails
- 6. Ruby on rails动作过滤器
- 7. Ruby on Rails 2.3.8:在过滤器之前忽略破坏行为忽略
- 8. Ruby on Rails操作帮助
- 9. 在Ruby on Rails中使用Dashes操作
- 10. 如何跳过Ruby on Rails中的过滤器自定义类之前?
- 11. Ruby on Rails中的实时过滤
- 12. Ticketee Ruby on Rails 4
- 13. 如何在Ruby On Rails中发布XHR操作之前更改请求参数?
- 14. 如何在Ruby on Rails中创建批量操作事务
- 15. 如何通过Ruby on Rails中的属性进行过滤?
- 16. Spark在过滤两次之前运行
- 17. Ruby on Rails的4复选框返回过滤
- 18. Ruby on Rails的4质量分配
- 19. 如何在Ruby on Rails 4中通过CoffeeScript渲染4
- 20. 在rails 4中,如何在创建之前操作强参数?
- 21. 安装/运行on Rails的4
- 22. 在Ruby on Rails中创建对象之后运行脚本
- 23. Ruby on Rails 4 testunit跳过验证
- 24. 在动作不跳过Rails 4之前跳过4
- 25. Ruby on Rails - 模型字段过滤器
- 26. Ruby on rails:过滤搜索框
- 27. Ruby on Rails的过滤用户
- 28. Ruby on Rails filterrific gem简单过滤器
- 29. Ruby on Rails的关联内部过滤
- 30. Ruby on Rails - link_to带标签过滤器
你检查这个问题? http://stackoverflow.com/questions/6011764/specify-which-controllers-to-exclude-from-before-filter –
thnks但它不回答我的问题。 – anyavacy