【问题标题】:Return 0 records metasearch返回 0 条记录元搜索
【发布时间】:2011-10-25 08:33:29
【问题描述】:

我在 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] 没有指定任何搜索条件(即用户提交了一个空表格)。

基本上我的问题与Metasearch question on StackOverFlow 相同,但该解决方案似乎不适用于 Ransack,因为它抱怨“search_attributes”不是可用的方法。

重要的是它返回 0 条没有提交参数和提交空参数的记录。任何解释为什么你的代码有效的注释都会很好。谢谢。

【问题讨论】:

    标签: ruby-on-rails-3.1 meta-search


    【解决方案1】:

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

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

    【讨论】:

    • 感谢完美。 #nil.blank 的解释?和 [].空白?也很有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    • 2023-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-05
    • 1970-01-01
    相关资源
    最近更新 更多