我正在尝试在 Rails 应用程序的用户索引页面上放置一个搜索工具(类似于 Michael Hartl 的 Rails 教程中的那个),并且正在使用 Ransack gem 进行搜索。这只是对用户名的简单搜索,我已实现如下:
用户控制器:
def index
@title = "All Users"
@search = User.search(params[:q])
@users = @search.result.paginate(page: params[:page])
end
索引视图:
<%= search_form_for @search do |f| %>
<%= f.text_field :name_cont, id: :search_box %>
<%= f.submit "Search" %>
<% end %>
问题是这样的:当我进入索引页面并搜索实际出现在那里的用户时,他们可能不会出现。例如,Linnie Bahringer 夫人出现在原始列表中,但在我搜索“lin”时没有出现在搜索结果中。
[我想在这里显示图片,但我需要五个声望点。]
自然地,我认为 Ransack 不知何故搞砸了查询。但是,当我将 @users 变量输出到页面时,通过放置
<%= @users.each do %>
<% end %>
在视图中,“失踪”用户在名称列表中,你瞧,出现在结果列表中!
有谁知道为什么会发生这种情况,以及如何在不将@users 变量的内容打印到屏幕上的情况下获得“正确”的结果集?我曾尝试将 '=' 符号从@users.each do
行中删除,但行为又回到了上述问题中提到的行为。
非常感谢您提供的任何帮助!
PS我可能应该显示我的整个视图文件以防万一它可能有用:
<% provide :title, 'All Users' %>
<h1>All Users</h1>
<div class="span3 offset9 btn-group">
<%= search_form_for @search do |f| %>
<%= f.text_field :name_cont, id: :search_box %>
<%= f.submit "Search" %>
<% end %>
</div>
<%= will_paginate %>
<!-- This bit is only in to show the value of @users -->
<%= @users.each do %>
<% end %>
<!-- Extra bit ends. -->
<ul class="users">
<%= render @users %>
</ul>
<%= will_paginate %>