2011-11-10 1 views
2

Я работаю с рельсами в течение нескольких недель, когда бывал у меня. Я пытаюсь создать PDF-вывод текущих данных моего приложения. Я использую креветку, которая работает нормально и будет_пагината. Возможно ли отправить текущие данные, которые отображаются на экране (например, выбранная страница), в выход pdf?Рельсы 3.1: Данные выходного тока из 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, но у меня все еще возникают проблемы с использованием правильных слов. Поэтому любые предложения были бы очень оценены!

ответ

3

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

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

Hi, ty очень много. Это сделал трюк! Раньше я это пробовал, но, конечно же, поставил эту часть не в круглые скобки. Мне пришлось немного изменить «truckdeliveries_controller.rb» и добавить для pdf строку «@truckdeliveries = truckdelivery.limit (10) .offset (params [: offset] .to_i) .order (« created_at desc ») 'bcause переменная с разбивкой по страницам, похоже, не доставляла правильные значения. – Christian