[英]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.