用户has_many土豆。土豆属于一个用户。马铃薯有很多怪癖。 Quirks属于土豆。
我想在我的用户节目和Paginate中使用如下所示的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
我的用户控制器预分页
UsersController
def show
@user = User.find(params[:id])
@potatoes = @user.potatoes
@quirks = Quirk.where(potato: @potatoes)
end
我可以通过更改UsersController -
来对土豆进行分页@potatoes = @user.potatoes.paginate(page: params[:page])
和用户 - show.html.erb
<%= @potatoes.potato_name %>
<%= will_paginate @potatoes %>
但是我怎么能得到用土豆分页的怪癖,这样当我点击下一步时我会得到与下一组相关的土豆和怪癖?最初我得到的土豆分页和怪癖只是展示自己,这就是为什么我以前没有显示怪癖。我不太了解.pagination电话。
我可以调用:param_name指定页码的参数名称,并确保它正常工作。
我能做到
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
show.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 %>
这应该给我土豆和怪癖分开...但当我下一页土豆,土豆是分页和怪癖正在消失。当我下一页怪癖页面时,土豆保持不变,只有怪怪发生变化。
我认为上述错误是因为我在土豆查询中调用分页,然后使用土豆查询再次调用分页。
答案 0 :(得分:0)
整体看起来应该是:
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
show.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回到默认页面,因此两个模型会同时更改。要单独更改它们,请使用potato_page和quirks_page,如问题所示。我也删除了
<%= will_paginate @quirks %>
因为我有两个下一个酒吧。如果你要单独更改@potatoes和@quirks,则需要包含它。