我有我的所有文章的列表,按客戶名稱排序。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