我使用的是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条记录,没有提交参数并提交空参数。任何解释你的代码工作原理的注释都会很好。感谢。
答案 0 :(得分:0)
您可以用以下代码替换控制器代码:
if !params[:q].blank? # nil.blank? and [].blank? are true
@q = Person.search(params[:q])
@people = @q.result
else
@people = []
end