【问题标题】:Displaying a select number of blog entries显示选定数量的博客条目
【发布时间】:2011-12-05 14:38:52
【问题描述】:

我对使用 Ruby on Rails 还很陌生。 我创建了一个名为“posts”的博客,我希望我的主页显示 2 个最新条目...

到目前为止,我已经使用它显示所有博客文章

<% @posts.each do |post| %>

但是如何修改它以仅显示最新的 2 个?

非常感谢。

【问题讨论】:

    标签: ruby-on-rails ruby database blogs


    【解决方案1】:
    @posts = Post.order('created_at desc').limit(2)
    

    【讨论】:

    • 这似乎不起作用我担心“你有一个 nil 对象,但你没想到它!你可能期望一个 Array 的实例。在评估 nil.each 时发生错误"
    • 我错了,我应该把“@post”改成“@posts”。现在工作正常!非常感谢。
    • 是的,这确实是一个错字。修好了。
    【解决方案2】:

    假设您的控制器中有 @posts = Post.all 之类的东西,您只需执行以下操作:

    @posts = Post.last(2)
    

    【讨论】:

    • 这确实有效,但是在我的控制器中我实际上有 @posts = Post.all(:order => "created_at DESC") 以便博客条目会以与时间相关的方式出现。有没有办法将 (:order => "created_at DESC") 与您的解决方案结合起来? (我确实尝试过,但没有运气)
    • 你会做类似@posts = Post.last(2).order('created_at DESC')的事情。
    • 没有冒犯,但这将完全相反。显然,将 last 与明确的顺序一起使用是违反直觉的,因为您应该颠倒想要的顺序。
    • 是的,你是对的。首先,方法调用的顺序是错误的,last 不会返回 Relation。其次,使用last 在此处无法按预期工作。限制查询是要走的路。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 2017-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多