返回0记录元搜索

时间:2011-10-25 08:33:30

标签: ruby-on-rails-3.1 meta-search

我使用的是Rails 3.1,我正在使用Ransack Gem。这就是我在我的控制器中所拥有的:

@q = Person.search(params[:q])
@people = @q.result 

这就是我的看法:

<%= search_form_for @q do |f| %>

  <label>Given Name:</label>
  <%= f.text_field :given_name_cont %>

  <label>Family Name:</label>
  <%= f.text_field :family_name_cont %>

  <%= f.submit %>

<% end %>

这很有效,符合Ransack文档。但是,如果我的搜索表单不包含任何参数(即没有指定要搜索),则返回 ALL 记录。我想要发生的是 NO 记录返回。

我的Ruby很弱,所以如果没有params [:q]或params [:q]没有指定任何搜索条件(即用户提交了一个),有人可以告诉我如何干净地让@people返回一个空数组空表格。

基本上我的问题与此Metasearch question on StackOverFlow相同,但解决方案似乎不适用于Ransack,因为它抱怨“search_attributes”不是可用的方法。

重要的是它返回0条记录,没有提交参数并提交空参数。任何解释你的代码工作原理的注释都会很好。感谢。

1 个答案:

答案 0 :(得分:0)

您可以用以下代码替换控制器代码:

if !params[:q].blank?  # nil.blank? and [].blank? are true
  @q = Person.search(params[:q])
  @people = @q.result 
else
  @people = []
end