繁体   English   中英

Ransack不过滤我的桌子

[英]Ransack doesn't filter my tables

我遇到了一个问题。 我看了Railscasts 370 ,发现了一个很酷的新宝石,叫做ransack

我的问题是,它没有执行我想要的操作,而是根据搜索过滤表

这是我的控制器

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 %>

当我输入“技嘉”并单击搜索时,我在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

这些是我表中3个项目的名称。 我期望从该查询返回一个结果。

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

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])

我最近一直在使用宝石,关于栏杆,宝石可能发生了一些变化

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM