在我的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