Rails Wicked PDF - Как скачать pdf файл после сохранения записи и продолжить перенаправление как обычно? - PullRequest
0 голосов
/ 31 мая 2018

У меня есть форма, в которой я хочу заставить пользователя загрузить pdf-файл / версию, используя wicked_pdf драгоценный камень этой новой записи с некоторым содержимым с кнопкой отправки под названием Save and Download.На данный момент файл загружается, когда пользователь нажимает Save and Download, но страница останавливается и не перенаправляется на свою страницу показа, как обычно.Теперь я должен быть таким из-за моего примера кода ниже.Тем не менее, я не мог понять, как добиться того, что я хочу, Сохранить -> Загрузить PDF -> Перенаправить, или может быть Сохранить -> Перенаправить -> Загрузить PDF.

Допустим, у меня есть orders_controller.rbсо следующими actions.

def create
  @order = Order.new(order_params)
  if @order.save
    redirect_to order_path(@order, format: :pdf)
  else
    render :new
  end
end

def show
  respond_to do |format|
    format.html do
      @order = Order.find(params[:id])
    end
    format.pdf do
      render  pdf:      'New Order',
              template: 'orders/show.pdf.haml',
              page_size: 'A4',
              layout:   'pdf_design.haml',
              disposition: 'attachment'
    end
  end
end

1 Ответ

0 голосов
/ 31 мая 2018

Используйте приведенный ниже бит кода и передайте переменную вашего экземпляра в locals.

ac = ActionController::Base.new()
pdf_string = ac.render_to_string pdf: 'New Order', template: 'orders/show.pdf.haml', encoding: "UTF-8", locals: {order: @order}

Настройте ваше представление, чтобы назначить локальный order переменной экземпляра представления или напрямую использовать order

Затем присвойте файл следующим образом:

file = StringIO.new(pdf_string)

И затем загрузите его с любым драгоценным камнем (Скрепка, Carrierwave ...)

...