Ruby on rails 如何在rails的分页中选择as?

Ruby on rails 如何在rails的分页中选择as?,ruby-on-rails,ruby,ruby-on-rails-3,pagination,kaminari,Ruby On Rails,Ruby,Ruby On Rails 3,Pagination,Kaminari,我有这样的密码 @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 = Article.find(:all, :conditions => { :ART_ID => @linkla.map(&:LA_ART_ID)})
@articles = Kaminari.paginate_array(@pre_articles).page(params[:page]).per(15)
它为我选择了一个数据数组,但它很大,所以我决定添加分页。它选择了15个条目进行查看,也选择了我看到的日志中的每一页,sql是如何像在first@pre_文章中那样选择所有数组的。为了提高速度:如何在每个页面上选择例如0-15、15-30、30-45等条目并发送供查看?现在,它选择了所有数据,但根据需要进行分解

哦,对不起,很重要

@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)

我的问题也是如此。正如你所看到的,根据@linkla的结果,我选择了文章,而linkla像以前一样选择了很多。。。如何做到他只为我的页面选择

使用where子句而不是条件find怎么样

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

生成的SQL查询将包含一个LIMIT子句,以避免加载不必要的数据。

所述问题的解决方案:

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
假设参数散列包含链接类型名称和gen艺术名称


您是否在视图中使用@linkla变量?整个操作可以在一个查询中完成。您正在使用旧系统吗?你的专栏命名惯例让我想起了少年精神时代的味道。@kandaboggu不,这是购物车parts@KandadaBogguno linkla仅在控制器中使用:LA_GA_ID代表什么?它指向哪个模型?你能在你的问题中发布你的模型和它们之间的关系吗?您还可以列出正在处理的控制器操作的输入参数。
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)