#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»)’, потому что переменная с разбиением на страницы, похоже, не выдавала правильные значения.