2011-10-25 91 views
0

我在Rails 3.1上,我使用的是Ransack Gem。這是我在我的控制器:返回0條記錄元搜索

@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 %> 

這工作得很好,是每洗劫文檔。但是,如果我的搜索表單不包含任何參數(即沒有指定搜索),它將返回全部記錄。我想要發生的是NO記錄返回。

我的Ruby非常弱,所以有人可以告訴我如果沒有參數[:q]或params [:q]沒有指定任何搜索條件(即用戶提交),@people如何清楚地返回一個空數組一個空的表格)。

本質上,我的問題與Metasearch question on StackOverFlow一樣,但該解決方案似乎不適用於Ransack,因爲它抱怨「search_attributes」不是可用的方法。

重要的是,它返回的記錄沒有參數提交,並提交了空的參數。任何解釋爲什麼你的代碼工作的說明都會很好。謝謝。

回答

0

你可以將其替換控制器代碼:

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

感謝完美的作品。 #nil.blank的解釋?和[] .blank?也有幫助。 – Oscar