Rails 使用 will Paginate 进行搜索

Posted

技术标签:

【中文标题】Rails 使用 will Paginate 进行搜索【英文标题】:Rails search with will Paginate 【发布时间】:2021-12-15 23:53:10 【问题描述】:

在我现在使用的代码下方。当前代码分页将显示每页 100 个用户。当前搜索功能使用 JQuery 代码实现。由于分页显示 100 条记录,因此仅搜索 100 条记录。我需要使用 will paginate 来实现搜索。如果我搜索用户,它将从数据库中获取详细信息并显示在 table 中。有人可以建议如何在 rails 中使用 will paginate 来实现它吗?

控制器

 @user_list = User.all.paginate(:page => params[:page], :per_page => 100)

html.erb

 <%= will_paginate @user_list %>
<table id="users_access_table">
  <thead>
    <tr>
    <th>Name</th>
    <th>Email</th>
    <th>Curernt Access</th>
    <th>API User Access</th>
     </tr>
  </thead>
  <tbody id="table_body">
  <br>
  <div class="col-md-4" style="float: left;">
    <input class="form-control" title="Search" type="text" id="userinput" onkeyup=" searchUsers()" placeholder="Search &#x1F50D; :">
  </div>
  <br>
  <br>
  <% @user_list.each do |user| %>
    <tr>
      <td>
        <%=user['name']%>
      </td>
      <td>
        <%=user['email']%>
      </td>
       <td>
        <%=user['access']%>
      </td>
       <td>
        <%=user['api_users']%>
      </td>
      
 </td>
        
       <td>
 

【问题讨论】:

我猜onkeyup 事件正在执行客户端搜索操作。您真正想要的是将查询发送到后端,根据您传递的参数过滤数据并呈现响应。 like this 应该可以帮到你 【参考方案1】:

您还需要在控制器级别和 UI 端进行更改。

我正在考虑参数从 UI 端传入控制器,并在用户控制器上的查询中进行更改。

您需要创建 LIKE 查询而不是 all

@user_list = User.all.paginate(:page => params[:page], :per_page => 100)

改变它

@user_list = User.where("name LIKE ? OR email LIKE ?", "%#search_param%", "%#search_param%").page(params[:page]).per(100)

希望它能帮助您解决问题。

【讨论】:

以上是关于Rails 使用 will Paginate 进行搜索的主要内容,如果未能解决你的问题,请参考以下文章

Rails 3 分页,will_paginate 与 Kaminari

使用 will_paginate gem 在 Rails 3.2.3 中调用 Ajax

使用will_paginate和Rails时显示部分结果

Rails 5.2 上 jquery DataTables 和 will_paginate gem 的分页问题

Rails 有内置的分页解决方案吗?

使用 will_paginate 对多个分页页面进行排序