我希望能够搜索和更新索引。
这是我的控制器方法:
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 %>
我在一些搜索教程中看到了这个设置,但无论我输入什么都没有出现。有人知道我做错了吗?
答案 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
。