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 🔍 :">
</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