我正在尝试对协会进行分页,但我缺少一些东西。

这是我需要使用.paginate(:page => params[:page], :per_page => 25)分页的地方。如果我理解正确,我必须在控制器中进行一个变量来提取城镇?

<% @alliance.players.each do |p| %>
  <% p.towns.each do |t| %>
    ...
  <% end %>
<% end %>


我在说什么:

Alliance ->
  Players ->
    Towns <--


基本上,我停留在如何在第二级循环中对协会进行分页。

也许有更好的方法可以做到这一点。



关联:

class Alliance < ActiveRecord::Base
  # Primary Key
  self.primary_key = 'grepo_id'

  # Associations
  has_many :players
end


class Player < ActiveRecord::Base
  # Primary Key
  self.primary_key = 'grepo_id'

  # Associations
  has_many :towns
  belongs_to :alliance
end

class Town < ActiveRecord::Base
  # Primary Key
  self.primary_key = 'grepo_id'

  # Associations
  belongs_to :player, :foreign_key => :player_id
end


我已经尝试阅读了很多,但是还没有找到任何解决方案。

我试图在控制器中创建一个变量:

@alliance_towns = @alliance.players.towns.order("rank ASC").paginate(:page => params[:page], :per_page => 25)


所以我可以打电话给@alliance_towns.each do {}但在这

undefined method `towns' for #<ActiveRecord::Associations::CollectionProxy::ActiveRecord_Associations_CollectionProxy_Player:0x007f9268d91348>


我想念什么?

最佳答案

您应该使用join。像这样:

@alliance_towns = Town.joins(:player).where('players.alliance_id = ?', params[:id]).order('rank ASC').paginate(:page => params[:page], :per_page => 25)

关于ruby-on-rails - will_paginate-协会,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23722851/

10-12 19:41