2012-02-15 9 views
0

私はすべての記事のリストをクライアント名で注文しています。次の前の記事(注文に基づく)

articles_controller.rb - 私のショーのページでインデックス

@articles = Article.order('client') 

、どのように私はその順序で次と前の記事を得るのですか?

答えて

0

を動作するはずです。(「クライアント」)は、すべての」

どういうわけか、このような:これに基づき

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

あなたは十分シンプル前回と次の記事を計算することができます。これが賢明な解決策であるかどうかは分かりませんが、うまくいくはずです。

+0

これはうまく見える - ありがとう。 3行目で 'index = @ article_list.index(@article)'を意味すると思いますか? – Edward

+0

はい、確かです。申し訳ありませんがタイプミス。あなたがあなたのビューでこれを使いたいのであれば@indexである可能性があります。 –

+0

'next = @article_list [index + 1]'ありがとう - それは素晴らしいです。 – Edward

0

は、モデル内の2つのスコープを持っているあなたは

次の記事ような何かを

(現在の記事インデックスが1であると言う)可能性が検証と

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 

@articles(curr ent_index + 1)@articles(current_index + 1).nil? @articlesない限り(CURRENT_INDEX - 1).nil -

前の記事

@articles(1 CURRENT_INDEX)(現在の記事インデックスが2であると言いますか)?

** haventは、コードを試みたが、あなたはすでに、あなたが「Article.orderによって返される配列内のこの記事の位置を取得するには「インデックス」を使用することができshowアクションのための記事をお持ちの場合は

関連する問題