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 的应用程序布局?的主要内容,如果未能解决你的问题,请参考以下文章