我开始使用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>
答案 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)