【问题标题】:Ordering by created-at with next and previous post links通过 created-at 排序,带有下一个和上一个帖子链接
【发布时间】:2014-07-16 11:13:44
【问题描述】:

从这里的其他问题和答案中,我可以看到要创建“下一个”和“上一个”链接,您可以这样做:

def previous_post
  self.class.first(:conditions => ["title < ?", title], :order => "title desc")
end

def next_post
  self.class.first(:conditions => ["title > ?", title], :order => "title asc")
end

如果它们是唯一的,它将按标题排序。我不太了解条件语法,想知道是否有人可以解释一下。

如果我想按 created_at 日期订购,我可以将顺序更改为 created_at desc 和 created_at asc,但是我的条件是什么?

【问题讨论】:

  • 这就是您在 rails 2 中进行活动记录查询的方式。他们使用它是因为他们按标题排序。您的条件将是 ["created_at &lt; ?", created_at] 用于上一个帖子,["created_at &gt; ?", created_at] 用于下一个帖子
  • 在 Rails 4 中会有更有效的方法吗?或者那个语法可以吗?还有这句话是什么意思 ["created_at

标签: ruby-on-rails ruby


【解决方案1】:

如果你在 rails 4 你会这样做:

def previous_post
  self.class.where("created_at < ?", created_at).order(created_at: :desc).first
end

def next_post
  self.class.where("created_at > ?", created_at).order(created_at: :asc).first
end

【讨论】:

  • 谢谢,虽然我不确定这是否符合我的要求。如果你去最新的帖子myblogview.herokuapp.com/posts/…,那么当你点击上一个帖子时,它会带你回到创建的第一个帖子,而不是前一天的帖子......我可以明白它为什么这样做我们正在使用 .first,但如果我不想这样做呢?谢谢
  • @Richlewis 然后不要使用 created_at,在博客文章中设置一个日期字段并使用它
  • 我还没有,我用一个助手来转换 created_at 日期:(
  • 我不相信你,你用的是updated_at吗?博客文章顶部的日期在哪里?
  • 是的,有一个 updated_at 列,虽然我想知道为什么 created at 会这样,但我使用这个助手 def date_output(date) date.strftime("%e %B %Y") if date end然后通过创建日期,我不应该在视图中这样做吗?
猜你喜欢
  • 1970-01-01
  • 2020-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-26
  • 1970-01-01
  • 2016-12-10
相关资源
最近更新 更多