用于LIKE的Rails搜索查询 - ActiveRecord :: RecordNotFound

时间:2015-10-12 18:37:48

标签: ruby-on-rails ruby-on-rails-4 activerecord

这个问题的帖子很少,但没有一个能解决我的问题。今天的大多数教程似乎都使用旧的方式(Rails< 3)。我在Rails 4上。

在我的根目录中,我有:

<%= form_tag search_supports_path, :method => 'get' do %>
    <p>
        <%= text_field_tag :search %>
        <%= submit_tag "Search" %>
    </p>
<% end %>

在控制器中:

  #search_supports#index
  if params[:search]
    @supports = Support.find(:all, :conditions => ['name LIKE ?', "%#{params[:search]}%"])
  else
    @supports = Support.find(:all)
  end

如果我在控制器中@supports = Support.all进行测试,我会使用@supports.each阻止我的视图中的所有支持。

我得到的确切错误是:

Couldn't find all Supports with 'id': (all, {:conditions=>["name LIKE ?", "%[:search]%"]}) (found 0 results, but was looking for 2)

是否有Rails 4进行此搜索?如果是的话,我可以找到您的答案的链接以便阅读吗? PS:我还在学习Rails。

1 个答案:

答案 0 :(得分:0)

这看起来很像Rails 2代码。

Support.find(:all, :conditions => ['name LIKE ?', "%#{params[:search]}%"])

在Rails 4语法中,它应该如下所示:

Support.where('name LIKE ?', "%#{params[:search]}%")

我建议使用Rails指南进一步阅读ActiveRecord Query Interface