Rails - 使用 SQL 的应用程序布局?

Posted

技术标签:

【中文标题】Rails - 使用 SQL 的应用程序布局?【英文标题】:Rails - Application layout with SQL? 【发布时间】:2010-07-02 16:44:26 【问题描述】:

你好,我所有的程序员! 我有一个问题哦,窒息!..:P 现在我的问题是我正在尝试为更大的网站进行设计,它进展顺利。直到我应该制作内容/新闻滑块。它应该从多个表中获取数据并返回到 application.html.erb。

所以它只接受最新的 5 条评论和公告,并在最新创建后订购。然后在application.html.erb中给我.. (Rails 3.0.0.beta4)​​em>

希望你们能理解我。

【问题讨论】:

您能否重新表述这个问题(或更具体一点)?提前致谢。 这很难解释,尤其是当我对英语如此糟糕的时候。但我会试试的。我在布局部分使用 nifty:layout,所以我创建了一个自定义的 application.html.erb 文件,因为我有一个滑块来滚动新闻、评论和类似内容的内容。从多个表。所以我的问题是如何从我的表中取出数据(参见:表(有几个)),然后取出数据。就像@posts = Posts.find(..) 中的帖子一样,你明白了吗? 【参考方案1】:

对所有模型取最新的 5 个,然后将所有记录放在一个数组中,对数组进行排序并取前 5 个元素。

# consider moving .order('date desc').limit(5) to a named scope or a module
announcements = Announcement.order('date desc').limit(5)
posts = Post.order('date desc').limit(5)
monkeys = Monkey.order('date desc').limit(5)
# .. add others here

elements = (announcements + posts + monkeys).sort_by(&:date).reverse[1..5]

变量elements 将有5,如果它们存在的话。

注意:我假设您的所有模型都有一个名为“日期”的方法。您可以将其更改为 date_created 或其他任何内容。

您可以将这段代码放在多个地方,但我认为最好的一个是“主页”控制器,它是专门为呈现主页而创建的。元素将根据其显示操作进行计算。

【讨论】:

嘿,谢谢,但你没有回答我最后一部分的问题,关于把它放在哪里?控制器。不,我没有日期方法? 当然 - 恕我直言,家庭控制器是您最好的选择。更新了我的答案。【参考方案2】:

不知道使用这种语法是否比 egarcia 的语法更高效:

elements = (announcements | posts | monkeys).sort_by(&:date).reverse[1..5]

如果您需要在多个页面中使用此代码(例如在侧边栏中),那么最好的方法是编写一个帮助程序(例如:last_items)

【讨论】:

以上是关于Rails - 使用 SQL 的应用程序布局?的主要内容,如果未能解决你的问题,请参考以下文章

Rails - 从模型中获取值到应用程序布局中

在 Rails 应用程序布局文件中动态设置类

是否每个 Rails 应用程序都在其布局中创建了默认的 application.html.erb?

使用单独的脚本文件和 Rails 资产

在 Rails 4 中实现通用搜索

Rails 3:资产管道+许多布局