搜索表单(Ransack gem)

时间:2013-08-04 16:46:16

标签: ruby-on-rails ransack

基于http://www.bargainstockfunds.com的示例,我已经能够在我的廉价股票基金网站(http://railscasts.com/episodes/370-ransack)上找到一个搜索表单。通过一些修改(产品 - >基金,产品 - >基金,产品 - >基金),我能够让它发挥作用。

默认情况下,示例应用程序显示数据库表中的所有记录。对于我的特定应用程序,这不是一个可行的选择,因为它涵盖超过10,000个股票基金,并且在页面上加载它们需要花费太多时间。

如果条目数小于给定数量,我怎样才能让搜索表单显示条目? (我想的是像200这样的东西。)如果资金数量太大,我想提供一条消息,说“太多资金 - 请缩小搜索范围”。如果资金数量为0,我想提供一条消息,上面写着“没有可用资金 - 请扩大您的搜索范围”。

2 个答案:

答案 0 :(得分:2)

页面上的200个条目仍然很安静,我希望您将使用will_paginate gem来控制它,实现非常简单。

https://github.com/mislav/will_paginate/wiki

如果您使用ransack,那么您可以调用这样的方法。

def method
  if @search.result.count >= 200
    redirect_to root_path, notice: " Please narrow your search"
  elsif @search.result.count == 0
    redirect_to root_path, notice: "0 search results returned"
  else
   true
end

如果您想阻止加载过多,那么您可以随时在@ search.result上调用.limit(x)方法

希望有所帮助。

答案 1 :(得分:0)

通过使用Kaminari gem对结果进行分页,我能够快速使用我的搜索表单。我试过了will_paginate,但我无法让它为我工作。我想我可能会坚持使用will_paginate宝石,但Railscast最近覆盖了Kaminari,而不是覆盖了will_paginate。鉴于Ruby on Rails是多么挑剔,以及旧程序的细节如何过时,我决定使用Kaminari。