下一篇文章基于订单

时间:2012-02-15 14:25:18

标签: ruby-on-rails ruby-on-rails-3.1

我有一份所有文章的清单,按客户名称排序。

articles_controller.rb - index

@articles = Article.order('client')

在我的展示页面中,如何按顺序获取下一篇和上一篇文章?

2 个答案:

答案 0 :(得分:0)

您的模型中有两个范围

class Article < ActiveRecord::Base
  scope :order_by_id, lambda {
    {:order => "id desc"} 
  }

  scope :order_by_client, lambda {|client_id|
    {:order => "client_id desc"} 
  }

end

@articles = Article.order_by_client(1).order_by_id

通过验证,您可以执行类似

的操作

下一篇文章(说当前文章索引是1)

@articles(current_index + 1)除非@articles(current_index + 1).nil?

上一篇文章(比如当前的文章索引是2)

@articles(current_index - 1),除非@articles(current_index - 1).nil?

**没有尝试过代码,但应该可以使用

答案 1 :(得分:0)

如果您已经有show动作的文章,您可以使用'index'来获取本文在'Article.order('client')返回的数组中的位置。所有'

不知怎的这样:

@article = Article.find(params[:id])
@article_list = Article.order(:client).all
index = @article_list.index(@article)

基于此,您可以简单地计算上一篇和下一篇文章。不确定这是否是最聪明的解决方案,但它应该有效。