我在 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 文档。但是,如果我的搜索表单不包含任何参数(即没有指定要搜索的内容),它会返回所有记录。我想要发生的是没有返回记录。
我的 Ruby 很弱,所以如果没有 params[:q] 或 params[:q] 没有指定任何搜索条件(即用户提交了一个空表单),有人可以告诉我如何干净地让@people 返回一个空数组.
本质上,我的问题与StackOverFlow 上的 Metasearch 问题相同,但该解决方案似乎不适用于 Ransack,因为它抱怨“search_attributes”不是可用的方法。
重要的是它返回 0 条记录,没有提交任何参数并且提交了空参数。任何解释为什么你的代码有效的注释都会很好。谢谢。