ruby on rails -用Ransack搜索-记录不被渲染,尽管是实例变量



我试图在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"时,却没有出现在搜索结果中。

[我想在这里展示图片,但不能,因为我还需要5个声望点]

自然地,我认为Ransack在某种程度上搞砸了这个问题。但是,当我将@users变量输出到页面时,通过输入

<%= @users.each do %>
<% end %>

显示在视图中,'missing'用户出现在名称列表中,并且出现在结果列表中!

有没有人知道为什么这可能会发生,以及我如何能够以"正确"的结果集结束,而不将@users变量的内容打印到屏幕上?我曾尝试将'='符号从@users.each do行中取出作为黑客,但行为返回到上面问题中提到的。

事先非常感谢你能给的任何帮助!

我可能应该显示我的整个视图文件,以防万一它可能会使用:
<% 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 %>

嗯,我觉得自己有点笨。在另一个问题上工作了一段时间后,我想到可能只是信息的显示出错了。果然,当我检查HTML源代码时(我很惊讶我在发布问题之前忘记了),"失踪"的用户在其中。

我通过在列表上方的div(几乎是@users.each do位)中放置一个不间断的空格来解决这个问题,然后将该div的CSS设置为在其中包含clear: both;

这是我更新后的视图:

<% 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>
<div id="clear-space">
&nbsp;
</div>
<div id="all_users_list">
<%= will_paginate %>
<ul class="users">
    <%= render @users %>
</ul>
<%= will_paginate %>
</div>
就像我说的,这是一个愚蠢的错误,但我们都是笨蛋至少一天一次!

相关内容

  • 没有找到相关文章

最新更新