代码之家  ›  专栏  ›  技术社区  ›  Oluf Nielsen

Rails-应用程序布局与SQL?

  •  0
  • Oluf Nielsen  · 技术社区  · 15 年前

    你好 我所有的编码员! 我有个问题 哎哟! …P 现在我的问题是,我正在努力为一个更大的网站设计一个设计,它是好的。直到我制作内容/新闻滑块。它应该从多个表中获取数据并返回application.html.erb。

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

    希望你们能理解我。

    2 回复  |  直到 14 年前
        1
  •  1
  •   kikito    15 年前

    对所有模型取最新的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个。

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

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

        2
  •  0
  •   Andrea Pavoni    15 年前

    不知道使用这种语法是否比使用Egarcia语法更有效:

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

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