Ransack 不会过滤我的表格

Ransack doesn't filter my tables

我 运行 遇到了一些问题。我看了 Railscasts 370 并发现了一个很酷的新 gem 叫做 ransack

我的问题是它没有做我想做的事情,即根据搜索

过滤table

这是我的控制器

def index
  @search = Component.ransack(params[:q])
  @components = @search.result
end

还有我的看法

<%= search_form_for @search do |f| %>

  <%= f.label :name_cont %>
  <%= f.search_field :name_cont %>

  <%= f.submit "Search" %>

<% end %>

当我输入 "Gigabyte" 并单击搜索时,我在 URL

中看到了以下内容
http://localhost:3000/components?utf8=%E2%9C%93&q%5Bname_cont%5D=Gigabyte&commit=Search

我知道这是查询的 URL 语法。它也会刷新页面。问题是,我看到以下三个结果

Intel Core i5-4460 3.2GHz Quad-Core
Gigabyte GA-Z97X-SLI ATX LGA1150
Team Elite Plus 8GB (2 x 4GB) DDR3-1600 Memory

这些是我 table 中 3 个项目的名称。我希望此查询只有一个结果 return。

如果有帮助,我已经添加了部分开发日志

Processing by ComponentsController#index as HTML
Paramaters: {"utf8=>"checkmark", "q" => {"name_cont"=>"Gigabyte"}, "commit"=>"Search"

它也出现在参数中,所以我完全不明白为什么我的代码不起作用。任何帮助将不胜感激。

编辑

我想我发现了问题,但我不确定

我里面有这个<tbody>

<tbody>
  <% Component.all.each do |c| %>

    <tr>
      <td> <strong><%= c.part %></strong> </td>
      <td> <a id="links" href="<%=c.link%>"> <%= c.name %> </a></td>
      <td> $<%= c.price %> </td>
    </tr>

  <% end %>

</tbody>

编辑

看来确实是我的失误。将 Component.all 更改为 @components.each 修复了它。

你试过改变这个吗

@search = Component.ransack(params[:q])

为此?:

@search = Component.search(params[:q])

我最近一直在使用 gem,gem 可能在 railscast

方面发生了一些变化