Ruby on rails 3.1 返回0个记录元搜索

Ruby on rails 3.1 返回0个记录元搜索,ruby-on-rails-3.1,meta-search,Ruby On Rails 3.1,Meta Search,我使用的是Rails 3.1,我使用的是。这是我的控制器中的内容: @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:&

我使用的是Rails 3.1,我使用的是。这是我的控制器中的内容:

@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文档的要求。但是,如果我的搜索表单不包含任何参数(即未指定搜索),它将返回所有记录。我想要的是没有返回任何记录

我的Ruby非常弱,如果没有参数[:q]或者参数[:q]没有指定任何搜索条件(即用户提交了一个空表单),那么有人能告诉我如何让@people干净地返回一个空数组吗

本质上我的问题与此相同,但解决方案似乎不适用于Ransack,因为它抱怨“搜索属性”不是一种可用的方法


重要的是,它返回0条未提交参数且提交空参数的记录。任何解释代码工作原理的注释都有助于理解。谢谢。

您可以将控制器代码替换为:

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

谢谢你真是太好了。对#nil.blank的解释?和[]。空白?这也很有帮助。