Rails 3.1: Вывод текущих данных из will_paginate в PDF

#ruby-on-rails #ruby-on-rails-3 #will-paginate #prawn

#ruby-on-rails #ruby-on-rails-3 #будет разбит на страницы #креветка

Вопрос:

Я работаю с rails уже несколько недель, когда у меня есть время. Я пытаюсь создать вывод PDF из отображаемых в данный момент данных моего приложения. Я использую prawn, который отлично работает и will_paginate. Возможно ли отправить текущие данные, которые отображаются на экране (например, выбранную страницу), в вывод pdf?

index.html.erb :

 <% @truckdeliveries.each do |truckdelivery| %>
 ...
<% end %>
<%= will_paginate @truckdeliveries %>
<%= link_to "PDF", truckdeliveries_path(@truckdelivery ,format: "pdf") %>
  

truckdeliveries_controller.rb :

 class TruckdeliveriesController < ApplicationController

def index
  @truckdeliveries = Truckdelivery.paginate page: params[:page], order: 'created_at desc',
  per_page: 10

  respond_to do |format|
    format.html # index.html.erb
    format.json { render json: @truckdeliveries }
    format.pdf do
      pdf = TruckdeliveryPdf.new(@truckdeliveries)
      send_data pdf.render, filename: "truckdelivery_.pdf",
                                    type: "application/pdf"
    end
  end
end
...
  

Это работает нормально, но показывает данные только для первой страницы и не меняется, если я переключаюсь на другую страницу. Я попытался изменить link_to на @truckdeliveries, но это создает только одну зашифрованную ссылку.

Я попробовал Google, но у меня все еще возникают проблемы с использованием правильных модных слов. Итак, любые предложения были бы очень признательны!

Ответ №1:

Мне кажется, причина, по которой печатается только первая страница, заключается в том, что ваша ссылка на PDF не включает параметр страницы. Попробуйте это вместо этого.

 <%= link_to "PDF", truckdeliveries_path(:format => "pdf", :page => params[:page]) %>
  

Комментарии:

1. Привет, тебе очень нравится. Это сделало свое дело!! Я пробовал это раньше, но, конечно, поместил эту часть не в круглые скобки. Мне пришлось немного изменить ‘truckdeliveries_controller.rb’ и добавить для pdf строку ‘@truckdeliveries = truckdelivery.limit(10).offset(параметры[:offset].to_i).order(«created_at desc»)’, потому что переменная с разбиением на страницы, похоже, не выдавала правильные значения.