Есть ли способ, чтобы результаты сохранялись на страницах will_paginate
? Я перечисляю отчеты через заданный диапазон с bootstrap-datepicker-rails
, который публикует результаты для диапазона, но затем, когда я нажимаю ссылку на страницу 2, он возвращается к тому, что результаты будут на странице 2 без диапазона.Rails will_paginate persistence
Вот что у меня есть:
просмотров/отчеты/index.html.erb
<%= render partial: "pages/navigation" %>
<div class="row reports">
<div class="col-md-2 sidebar no-float">
<h3 class="text-center">Select Date Range</h3>
<div class="input-daterange input-group" id="datepicker">
<%= form_tag reports_index_path, method: :post, :class => "form-inline" do %>
<div class="form-group">
<%= label_tag "Start Date:" %>
<%= text_field_tag(:start_date, @reports.blank? ? '' : params[:start_date], class: "form-control", name: "start_date", data: {"behaviour" => "datepicker"}) %>
<p class="text-center">to</p>
<%= label_tag "End Date:" %>
<%= text_field_tag(:end_date, @reports.blank? ? '' : params[:end_date], class: "form-control", name: "end_date", data: {"behaviour" => "datepicker"}) %>
</div>
<br/>
<br/>
<%= submit_tag "Update", class: "update-button" %>
<% end %>
</div>
</div>
<div class="col-md-10 report-list no-float">
<h2 class="text-center">Reports Archive</h2>
<% @reports.in_groups_of(3).each do |group| %>
<ul id="report-list list">
<% group.each do |report| %>
<div class="col-md-4">
<li class="report">
<div class="report-header">
<p>
<span class="report-data"><%= report.name %></span>
</p>
</div>
<p class="report-text"><%= report.range %></p>
<p class="report-text"><%= link_to "Download", report.pdf.url, target: "_blank" %></p>
</li>
</div>
<% end %>
</ul>
<% end %>
</div>
</div>
<!-- </div> -->
<div class="pagination-wrapper">
<%= will_paginate @reports, :previous_label => "Newer", :next_label => "Older", :params => { :start_date => params[:start_date], :end_date => params[:end_date] } %>
</div>
<%= render partial: "pages/footer" %>
контроллеры/reports_controller.rb
class ReportsController < ApplicationController
def index
@company = current_user.company
@locations = if @company
current_user.company_locations.order(:name)
else
[]
end
unless @company.nil? || @company.reports.empty?
if request.post?
@reports = @company.reports.where(created_at: report_params[:start_date]..report_params[:end_date]).order(created_at: :asc).paginate(page: params[:page], :per_page => 30)
else
if params[:start_date].present? && params[:end_date].present?
@reports = @company.reports.where(created_at: (report_params[:start_date]..report_params[:end_date])).order(created_at: :desc).paginate(page: params[:page], :per_page => 30)
else
@reports = @company.reports.order(created_at: :desc).paginate(page: params[:page], :per_page => 30)
end
end
end
end
private
def report_params
params.permit(:start_date, :end_date)
end
end
Это фиксированный Так, по умолчанию я загружаю все доступные отчеты, если запрос не post
, который я предполагаю, что это проблема, так как нажав на страницу-не пост.
Это не исправлено Всякий раз, когда я нажимаю на последнюю страницу после определения диапазона, она всегда возвращает ошибку, даже если есть еще записи, которые нужно показать.
Вот что страница по умолчанию выглядит при загрузке (без указанного диапазона пока):
Тогда вот что это выглядит, когда я определить диапазон (5/1/15 - 7/1/15) на странице 1:
Страница № 2-10 работа без проблем:
Но последняя страница всегда делает это, как будто will_paginate добавляет дополнительную страницу по какой-то причине:
Ваша фильтрация представлена как 'Post', который не существует, когда вы нажимаете на ссылку постраничной. Вы можете сделать форму фильтра, которая будет отправлена в 'GET', и будет сохраняться в ссылках на ссылки will_paginate. Вы можете настроить 'LinkRenderer' для сохранения параметров запроса. – HungryCoder
Есть ли пример этого? Является ли это 'will_paginate' переопределением или для всего приложения? – Godzilla74