gpt4 book ai didi

ruby-on-rails - Kaminari 和额外参数

转载 作者:太空宇宙 更新时间:2023-11-03 18:16:43 26 4
gpt4 key购买 nike

我环顾四周,找不到任何接近的答案。我认为这是一个非常独特的边缘案例,所以我并不感到惊讶。

我有一个索引页面,其中显示了所有线索,但我有 3 种不同的显示方式:未审核、已审核、全部。为此,我使用 current_page?帮助器,添加: ?unreviewed=true 到 url。

这本身没有问题,当我在 kaminari 中添加分页时,页面参数似乎把它搞砸了,让它成为 current_page?无法读取额外的参数。

我该如何解决这个问题,或者是否有更好的方法来实现这个目标?

这是使用 Rails 4 和 Kaminari 0.15.1

Controller :

def index
@leads = Lead.order(:id).page params[:page]
@reviewed_leads = Lead.where(reviewed: true).order(:id).page params[:page]
@unreviewed_leads = Lead.where(reviewed: nil).order(:id).page params[:page]
current_page_no = Lead.page
end

index.html.erb

         <tr>
<td colspan="7" style="text-align: center;">
<div class="pagination pagination-table">

<% if current_page?(controller: 'leads', action: 'index', unreviewed: 'true') %>
<%= paginate @unreviewed_leads %>
<% elsif current_page?(controller: 'leads', action: 'index', reviewed: 'true') %>
<%= paginate @reviewed_leads %>
<% else %>
<%= paginate @leads %>
<% end %>
</div>
</td>
</tr>

当 URL 看起来像这样时,它起作用了:

/closingloop/leads?unreviewed=true

像这样,current_page 没有正确读取它,它总是显示@leads 实例变量

/closingloop/leads?page=2&unreviewed=true

任何帮助将不胜感激。我将继续尝试。将根据我的发现进行更新。

最佳答案

将您的 Controller 操作更改为

def index
@leads = Lead.where(reviewed: params[:reviewed]).order(:id).page(params[:page])
end

然后在您看来,您不必检查当前页面,只需确保您传递的是 params[:reviewed]

的值
<%= paginate @leads, params: { reviewed: params[:reviewed] } %>

更新

正如评论中所指出的,这不适用于显示混合线索。这可以通过创建范围来实现

# lead model

def self.filter_by_reviewed_status(status)
case status
when nil then scoped
when 'true' then where(reviewed: true)
when 'false' then where(reviewed: false)
end
end

然后在您的 Controller 中,使用它来获取线索

@leads = Lead
.filter_by_reviewed_status(params[:reviewed])
.order(:id)
.page(params[:page])

确保在链接中将 params[:reviewed] 设置为 true、false 或 nil(根本不通过)以获得您需要的 leads

关于ruby-on-rails - Kaminari 和额外参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24984426/

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