gpt4 book ai didi

ruby-on-rails - 使用 will_paginate 对 Rails 中的许多 has_many belongs_to 关系进行分页

转载 作者:数据小太阳 更新时间:2023-10-29 08:11:25 26 4
gpt4 key购买 nike

一个用户有_很多土 bean 。土 bean 属于一个用户。土 bean 有很多怪癖。怪癖属于土 bean 。

我想在我的用户显示中一起显示我的土 bean 和它们相关的怪癖,并使用 will_paginate gem 进行分页,如下所示。

potato_names -> sweet potato    russet potato   mystery potato
quirk_name -> shiny rough purple
quirk_name -> big brown orange
quirk_name -> old medium blue

我的用户 Controller 预分页

UsersController

def show
@user = User.find(params[:id])
@potatoes = @user.potatoes
@quirks = Quirk.where(potato: @potatoes)
end

我可以通过更改 UsersController 对土 bean 进行分页 -

@potatoes = @user.potatoes.paginate(page: params[:page])

和用户 - show.html.erb

<%= @potatoes.potato_name %>
<%= will_paginate @potatoes %>

但是我怎样才能让 quirks 对土 bean 进行分页,这样当我单击下一步时,我就能获得与下一组相关联的土 bean 和 quirks?最初我想让土 bean 分页,让怪癖显示出来,这就是我之前没有显示怪癖的原因。我对 .pagination 调用的理解不够好。

我可以调用 :param_name 来指定页码的参数名称,并确保它正常工作。

will_paginate documentation

我可以

UsersController
def show
@user = User.find(params[:id])
@potatoes = @user.potatoes.paginate(page: params[:potatoes_page])
@quirks = Quirk.where(potato: @potatoes).paginate(page: params[:quirks_page])
end

显示.html.erb

<%= render @potatoes %>
<%= render @quirks %>

<%= will_paginate @potatoes, :params_name => 'potatoes_page' %>
<%= will_paginate @quirks, :params_name => 'quirks_page' %>

_potato.html.erb

 <%= potato.potato_name %>

_quirk.html.erb

 <%= quirk.quirk_name %>

这应该给我土 bean 和怪癖分别分页......但是当我下一页土 bean 时,土 bean 正在分页并且怪癖正在消失。当我打开下一页 quirks 页面时,土 bean 保持不变,只有 quirks 发生变化。

我认为上述错误是因为我在土 bean 查询中调用分页,然后使用土 bean 查询再次调用分页。

最佳答案

整体看起来应该是:

UsersController
def show
@user = User.find(params[:id])
@potatoes = @user.potatoes.paginate(page: params[:page])
@quirks = Quirk.where(potato: @user.potatoes).paginate(page: params[:page])
end

显示.html.erb

<%= render @potatoes %>
<%= render @quirks %>

<%= will_paginate @potatoes, :params_name => 'page' %>

_potato.html.erb

<%= potato.potato_name %>

_quirk.html.erb

<%= quirk.quirk_name %>

错误是在 UsersController 中使用@potatoes 和@quirks 对分页调用分页时出错。此外,我将 :params_name 更改回默认页面,以便两个模型同时更改。要分别更改它们,请使用问题中所示的 potatoes_page 和 quirks_page。我也删除了

<%= will_paginate @quirks %>

因为我得到了下两个酒吧。如果您要分别更改@potatoes 和@quirks,则需要将其包括在内。

关于ruby-on-rails - 使用 will_paginate 对 Rails 中的许多 has_many belongs_to 关系进行分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37579487/

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