Ruby on Rails - 搜索模型索引

时间:2014-08-26 15:31:08

标签: ruby-on-rails forms search models

我希望能够搜索和更新索引。

这是我的控制器方法:

def index
    if params[:search]
      @ofertas = Oferta.search(params[:search]).paginate(page: params[:ofertas_page], :per_page => 5)
    else
      @ofertas = Oferta.all.paginate(page: params[:ofertas_page], :per_page => 5)
    end
  end

我在模型中的搜索方法

def self.search(search)
    where("titulo like ?","%w{search}%")
  end

这是搜索表单

<%= form_tag ofertas_path, :method => 'get' do %>
  <p>
    <%= text_field_tag :search, params[:search], placeholder: "Procurar Entidades" %>
    <%= submit_tag "Procurar", :name => nil %>
  </p>
<% end %>

我在一些搜索教程中看到了这个设置,但无论我输入什么都没有出现。有人知道我做错了吗?

2 个答案:

答案 0 :(得分:2)

where("titulo like ?","%w{search}%")

应该是:

where("titulo like ?", "%#{search}%")

#{xxx}用于字符串插值 - 它允许您将ruby(包括变量)注入字符串。

"%xxxx%"告诉SQL,搜索字符串可以出现在titulo列的任何位置。 &#39;%&#39;是SQL中的通配符。

%w{xxx yyy zzz}["xxx", "yyy", "zzz"]的简写 - Ruby中的一个数组,对于SQL本身而言并不是很重要。

答案 1 :(得分:2)

看起来你试图将search变量插入到字符串中,但是没有得到正确的符号。怎么样:

"%#{search}%"

请注意#而不是w