我有一个事件模型,其中包含各种信息,例如日期,位置和最新情况。
我希望我的用户能够通过一组不同的文本框搜索事件列表,但我很难获得恰到好处的语法
在我看来,我有......<% 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 ..... ???
答案 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