跨多个控制器的小组件数据

时间:2008-09-23 22:23:20

标签: ruby-on-rails ruby

假设我有一个小部件,显示我在网站上发布的帖子或评论的摘要信息。

在控制器之间保存此信息的最简洁方法是什么?

在应用程序控制器中包含实例变量似乎是一个坏主意。有一个前置过滤器加载每个控制器的数据闻起来像代码重复。

我是否必须使用像Cells插件(http://cells.rubyforge.org/)这样的插件,或者有更简单的方法吗?

3 个答案:

答案 0 :(得分:1)

据推测,您有一个显示此信息的部分。您可以将在ApplicationHelper中获取所需数据的方法或类方法放在您从中获取数据的任何模型上。然后在需要显示时在partial中调用该方法。

答案 1 :(得分:0)

我做了类似的事情:

在controllers / application.rb

def load_sidebar
  @posts = Post.find(:all)
end

要将侧边栏包含在我执行此操作的各种操作中:

before_filter :load_sidebar, :only => [ :index ] #load from application.rb file

我将侧边栏变成了共享部分。

答案 2 :(得分:0)

def load_sidebar
  @posts = Post.find(:all)
end

您提到您正在显示摘要信息。如果您不想将所有帖子加载到内存中,可以执行以下操作。

def load_sidebar
  @post_count = Post.count(:id)
end