Mar*_* S. 10 ruby-on-rails ruby-on-rails-3
我正在开发一个RoR应用程序,我正在编写博客组件.我打算有一个布局文件,它将显示博客组件中每个页面上数据库中的所有标签.我知道如何创建和使用除application.html.erb之外的其他布局文件,但我不知道如何从数据库中读取各种控制器中每个操作的标签列表.我不想在每个动作中创建适当的实例变量.什么是适当的方法来解决这个问题?
Chr*_*ald 16
使用before_filter在application_controller创建实例变量:
before_filter :populate_tags
protected
def populate_tags
@sidebar_tags = Tag.all
end
Run Code Online (Sandbox Code Playgroud)
我建议使用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
Run Code Online (Sandbox Code Playgroud)
这将确保您的标记缓存一段时间(例如10分钟),这样您只需每10分钟进行一次此查询,而不是每次请求.
然后,您可以在侧边栏中显示标记,例如,如果您的布局中显示了_sidebar partial,则可以执行以下操作.
#_sidebar.html.erb
render @tags
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2076 次 |
| 最近记录: |