gpt4 book ai didi

ruby-on-rails - will_paginate - 关联

转载 作者:行者123 更新时间:2023-12-01 23:06:21 27 4
gpt4 key购买 nike

我正在尝试对协会进行分页,但我遗漏了一些东西。

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

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

我尝试并阅读了很多内容,但没有找到任何解决方案。

我尝试在 Controller 中创建一个变量:

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

这样我就可以调用 @alliance_towns.each 执行 {} 但在此我得到了

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com