2011-10-25 4 views
0

私はRails 3.1で、Ransack Gemを使用しています。これは私が私のコントローラに持っているものです。返信0 records metasearch

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

これがうまく機能して掻き回すドキュメントごとです。ただし、検索フォームにパラメータが含まれていない場合(つまり、検索する指定がない場合)は、ALLというレコードが返されます。何が起こりたいのですかNOレコードが返されました。

Rubyがかなり弱いので、params [:q]がないか、params [:q]が検索条件を指定していない(つまり、ユーザーが送信した)空のフォーム)。

本質的に私の質問はMetasearch question on StackOverFlowと同じですが、解決策は "search_attributes"が利用可能な方法ではないと不平を言うRansackにとってはうまくいかないようです。

パラメータが提出されず、空のパラメータがサブミットされた状態で0レコードが返されることが重要です。あなたのコードがなぜうまくいくのかを説明しているノートは良いでしょう。ありがとう。

答えて

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

関連する問題