从不同控制器的不同操作渲染页面的不同部分

时间:2013-01-25 21:33:00

标签: ruby-on-rails ruby ruby-on-rails-3 model-view-controller

我有一个索引页面,我决定同时呈现用户名,帖子和其他信息来源。 由于Devise负责用户创建和登录会话 - 管理我知道需要多个控制器。

PostsController,DashboardController和RandomController。计划是让它们在页面的不同部分呈现,具有不同的大小和不同的位置。

假设我在PostsController中有Post.find(:all => :order => "created_at DESC")。我想在页面上的某个地方渲染。 我想在属于它们的相应帖子下正确呈现用户名,我想渲染一些仍然“随机”控制器动作,它会在页面上的某个随机位置发布新闻。

回顾一下:

PostsController查找并呈现索引页面的某些部分,我猜想DeviseControllers会呈现属于相应的用户名,而随机控制器会在页面中间的新闻或某些内容中呈现一些随机内容。在所有这些中,所有这一切都发生在另一个名为DashBoard的控制器上。 因此,所有这些控制器操作都应该在自己的DashBoard控制器索引视图上呈现。

有关如何实现此目的的任何提示或好主意。我知道部分渲染,但我不知道如何实现。

1 个答案:

答案 0 :(得分:1)

似乎我们在讨论由Dashboard #index呈现的视图。因此,您需要做的就是将页面上的所有信息定义为索引操作下的实例变量。

可能缺少的信息是控制器可以自由使用来自任何模型的数据(甚至是其他不从ActiveRecord :: Base继承的类)。

例如,在Dashboard #index中,您可以拥有:

@posts = Post.order("created_at DESC").all

这是指与仪表板模型不同的模型(假设存在一个模型)。