我有我的所有文章的列表,按客户名称排序。Next前一篇文章基于订单
articles_controller.rb - 指数
@articles = Article.order('client')
在我的节目页面,如何获取的顺序下一个和以前的文章?
我有我的所有文章的列表,按客户名称排序。Next前一篇文章基于订单
articles_controller.rb - 指数
@articles = Article.order('client')
在我的节目页面,如何获取的顺序下一个和以前的文章?
如果你已经有了文章的演出行动,你可以使用“指数”,以获得本文中的阵列由“Article.order返回的位置(“客户”)的所有“
不知怎的,像这样:
@article = Article.find(params[:id])
@article_list = Article.order(:client).all
index = @article_list.index(@article)
在此基础上可以计算出一个和下一个文章很简单。不知道这是否是最聪明的解决方案,但它应该工作。
在你的模型中的两个作用域
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(curr ent_index + 1)除非@articles(current_index + 1).nil?
以前的文章(说当前文章指数是2)
@articles(CURRENT_INDEX - 1)除非@articles(CURRENT_INDEX - 1).nil?
**还没有尝试的代码,但应该工作
看起来不错 - 谢谢。我想你的第三行意思是'index = @ article_list.index(@article)'? – Edward 2012-02-15 16:37:52
是的,当然。对不起,错字。更正:)并可能是@index如果你想在你的视图中使用 – 2012-02-15 17:03:33
而'next = @article_list [index + 1]'谢谢 - 那太好了。 – Edward 2012-02-16 16:40:17