Rails - 搜索多个文本框和字段

时间:2010-04-06 17:16:56

标签: ruby-on-rails search textbox

我有一个事件模型,其中包含各种信息,例如日期,位置和最新情况。

我希望我的用户能够通过一组不同的文本框搜索事件列表,但我很难获得恰到好处的语法

在我看来,我有......

<% form_tag users_path, :method => 'get' do %>
(<%= text_field_tag :search_keyword, params[:search_keyword] %>) + 
(<%= text_field_tag :search_zip, params[:search_zip] %>)
<%= submit_tag "Find Events!", :name => nil %>
<% end %>

并且在控制器中我试图通过结果查询....

 if params[:search_keyword]
     @events = Event.find(:all, :conditions => [' name LIKE ? ',     "%#{params[:search_keyword]}%"])
 elsif  params[:search_zip]
     @events = Event.find(:all, :origin=> params[:search_zip], :within=>50 )
 else
          @events = Event.find(:all)
  end

如何对其进行编码,以便仅在文本框不为空时执行搜索?

如果同时填充了两个文本框,那么@events应该是BOTH查询的产物?    如果不知道这是否可行=&gt;(??? @ event = @ event + event.find ..... ???

1 个答案:

答案 0 :(得分:1)

在这种情况下,参数始终为:search_keyword:search_zip,但值为空/零/空。所以做这样的事情:

if !params[:search_keyword].blank? && !params[:search_zip].blank?
  # build query for both
elsif !params[:search_keyword].blank?
  # build for keyword
elsif !params[:search_zip].blank?
  # build for zip
else
  # all
end