我正在研究RoR應用程序,並且正在編寫博客組件。我打算有一個佈局文件,它將在博客組件的每個頁面上顯示數據庫中的所有標籤。我知道如何創建和使用application.html.erb以外的其他佈局文件,但我不知道如何從各種控制器中的每個動作讀取數據庫中的標籤列表。我不想在每個操作中創建適當的實例變量。什麼是解決這個問題的適當方式?Ruby on Rails從模型中讀取數據的佈局
10
A
回答
16
使用before_filter
在application_controller
創建實例變量:
before_filter :populate_tags
protected
def populate_tags
@sidebar_tags = Tag.all
end
1
在ApplicationController中定義一個私有方法,並用before_filter加載它。由於所有控制器都從ApplicationController繼承,因此它將在每個操作之前執行。
另一個想法是通過輔助方法加載它,但我更喜歡第一個解決方案。
9
我會建議使用的before_filter,而且緩存的結果的memcached。如果你打算在每次請求應執行此操作,最好做這樣的事情:
class ApplicationController
before_filter :fetch_tags
protected
def fetch_tags
@tags = Rails.cache.fetch('tags', :expires_in => 10.minutes) do
Tag.all
end
end
end
這將確保您的標籤緩存一段時間的時間(例如10分鐘),使您只需每10分鐘進行一次該查詢,而不是每次請求。
然後,您可以在邊欄中顯示您的標籤,例如,如果您的佈局中顯示了部分_sidebar,則可以執行以下操作。
#_sidebar.html.erb
render @tags
相關問題
- 1. Ruby on Rails - 渲染布局
- 2. Ruby on Rails模型/數據庫協會
- 3. Ruby on Rails:使用函數從模型中檢索數據
- 4. Ruby on Rails的模型
- 5. Ruby on Rails的模型
- 6. 如何使我的模型從Ruby on Rails中的文件中讀取
- 7. Ruby on Rails簡單的網站佈局
- 8. Ruby on Rails中的數據模型中的mxn關係
- 9. Ruby on Rails模型關聯
- 10. Ruby on Rails模型關係
- 11. jQuery跨Ruby on Rails模型
- 12. Ruby on Rails - 模型驗證
- 13. Ruby on Rails模型重用
- 14. Ruby on Rails關係模型
- 15. 使用Ruby on Rails模型
- 16. 比較模型Ruby on Rails
- 17. Ruby on Rails生成模型
- 18. Ruby on Rails動態模型
- 19. ruby on rails - current_user模型
- 20. Ruby on Rails - 模型關係
- 21. Ruby on Rails全局數組
- 22. 使用Ruby on Rails預加載佈局
- 23. Ruby on Rails - 佈局和鏈接
- 24. Ruby on Rails佈局和渲染
- 25. Ruby On Rails ERB CSS佈局問題
- 26. 鎖定大數據量讀取數據庫(Ruby-on-Rails/Heroku)
- 27. Ruby on Rails中的多態模型?
- 28. 模型Ruby on Rails中的關係
- 29. Ruby on Rails中的模型關係
- 30. Ruby on Rails中的模型繼承3
這正是我需要的答案。我曾想過使用before_filter,但不是在application_controller中。謝謝! – 2011-02-12 21:33:50