2010-07-02 44 views
0

你好,我所有的同行代码! 我遇到了问题ohh chok! ..:P 现在我的问题,我正在尝试做一个更大的网站的设计,它会很好。直到我应该制作内容/新闻滑块。它应该从多个表中获取数据并返回到application.html.erb。Rails - 使用SQL的应用程序布局?

所以它是采取评论和公告只是最新的5,并在最新创建后订购。然后把它给我application.html.erb .. (Rails 3.0.0.beta4)

希望你们能理解我。

+1

你能改述一下这个问题吗(或者更具体)?提前致谢。 – 2010-07-02 16:48:36

+0

这是很难解释,特别是当我对我英语如此糟糕。 但我会尝试。 我使用漂亮:布局的布局部分,所以我创建了一个自定义的application.html.erb文件,因为我有一个滑块来滚动新闻,评论和类似的东西。来自多个表格。所以我的问题是如何从我的表中取出数据(请参阅:表格(有几个表格)),然后将数据取出。就像@posts = Posts.find(..)中的帖子一样,你明白了吗? – 2010-07-02 17:43:45

回答

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”的方法。您可以将其更改为date_created或其他。

你可以把这段代码放在几个地方,但我认为最好的代码将是一个专门为渲染主页而创建的“家”控制器。元素将根据其显示动作进行计算。

+0

嘿,谢谢,但你没有给我答案在我的问题的最后一部分,关于在哪里放? Wich控制器。不,我没有日期方法? – 2010-07-03 08:27:08

+0

当然 - 一个家庭控制器是你最好的选择恕我直言。更新了我的答案。 – kikito 2010-07-03 19:23:11

0

不知道这是否是更好的性能,使用这种语法,而不是一个从egarcia:

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

,如果你需要使用几页的代码(例如在侧边栏),那么最好的方式可能是写一个帮手(说:last_items)