2012-06-22 37 views
0

我有這樣的代碼如何選擇在軌道分頁?

@pre_articles = Article.find(:all, :conditions => { :ART_ID => @linkla.map(&:LA_ART_ID)}) 
@articles = Kaminari.paginate_array(@pre_articles).page(params[:page]).per(15) 

它的選擇對我來說陣列的數據,但它是巨大的,所以我決定添加分頁。它選擇了15個條目進行查看,但也爲每個頁面(日誌),我看到,SQL是如何選擇所有數組在第一@pre_articles。要獲得更多速度:如何在每個頁面上選擇例如0-15,15-30,30-45等條目並將其發送至視圖?現在它選擇的所有數據,但dislpaying因爲我需要

噢,對不起,重要!

@linkla = LinkArt.where(:LA_ID => @la_typs.map(&:LAT_LA_ID), :LA_GA_ID => @genart.map(&:GA_ID)) 
@articles = Article.where(:ART_ID => @linkla.map(&:LA_ART_ID)).page(params[:page]).per(15) 

所以看起來我的查詢。正如你看到取決於@鏈接結果我選擇的文章,並鏈接拉選擇很多像以前一樣......如何做,他只選擇我的網頁

+0

你在你的看法使用'@ linkla'變量?整個操作可以在一個查詢中完成。 –

+0

你在使用舊系統嗎?你的專欄命名約定讓我想起'青春靈魂'時代的氣味...... –

+0

@KandadaBoggu不,它的購物車零件 – byCoder

回答

0

解決了上述問題:

LinkType 
    has_many :links 
    # let us assume there is a column called name 

# I wasn't sure about this model from your description 
GenArt 
    has_many :links 
    # let us assume there is a column called name 

Link 
    belongs_to :article 
    belongs_to :link_type 
    belongs_to :gen_art 
    # columns: id, article_id, link_type_id, gen_art_id 

Article 
    has_many :links 

假設你params哈希表包含link_type_namesgen_art_names

Article.joins(:links => [:link_type, :gen_art]).where(
    :links => { 
    :link_type => {:name => params[:link_type_names]}, 
    :link_type => {:name => params[:gen_art_names]} 
    } 
).page(7).per(50) 
+0

明天會嘗試 – byCoder

+0

你可以在你的問題中發佈你的模型和他們的關係嗎?還可以列出您正在使用的輸入參數與控制器操作。 –

0

那麼使用where子句,而不是條件查找?

@articles = Article.where(:ART_ID: @linkla.map(&:LA_ART_ID)).page(params[:page]).per(15) 

生成的SQL查詢將包含一個LIMIT子句以避免加載不必要的數據。

+0

以下非常重要的編輯! – byCoder