通过文本字段限制ransack输出

时间:2014-09-23 15:34:21

标签: ruby-on-rails ransack

我开始使用ransack gem来过滤我的数据库。但我无法找到如何定义可定义应显示多少行的文本字段,例如我将输入5到我的文本字段,我的输出将只显示数据库的最后5个结果。

控制器:

def index
    @q             = Roulette.search(params[:q])
    @numbers       = @q.result
end

查看:

<%= search_form_for @q do |f| %>
  <div class="field">
    <%= f.label :table_id_eq, "Table" %>
    <%= f.select :table_id_eq, options_from_collection_for_select(Table.all, :id, :title, @q.table_id_eq), include_blank: true %>
  </div>

  <div class="field">
    <%= f.label :woman_id_eq, "Woman" %>      
    <%= f.select :woman_id_eq, options_from_collection_for_select(Woman.all, :id, :name, @q.woman_id_eq), include_blank: true %>
  </div>

  <div class="actions"><%= f.submit "Search" %></div>
<% end %>

<div id="numbers">
  <% @numbers.each do |no| %>
    <h4> <%= no.number %>,</h4>
  <% end %>
</div>

1 个答案:

答案 0 :(得分:0)

您可以使用ActiveRecord::QueryMethods#limit来限制控制器中返回的结果数量。

 def index
     @q             = Roulette.search(params[:q]).limit(5)
     @numbers       = @q.result
 end

因此,您可以使用params哈希值将文本字段中的值传递给控制器​​,以供limit使用。例如:

 @q = Roulette.search(params[:q]).limit(params[:no_of_results)