我有一份所有文章的清单,按客户名称排序。
articles_controller.rb - index
@articles = Article.order('client')
在我的展示页面中,如何按顺序获取下一篇和上一篇文章?
答案 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)
基于此,您可以简单地计算上一篇和下一篇文章。不确定这是否是最聪明的解决方案,但它应该有效。