Я считаю, что лучший способ отправить pdf в браузер клиента - поместить ссылку в ссылку для загрузки. Часто вам нужно создать PDF после отправки формы, но также необходимо перенаправить на другую страницу.
Вы не можете перенаправить и отправить pdf одновременно , но вы можете перенаправить и затем предоставить ссылку для скачивания, например:
Сначала добавьте gem 'prawn'
в свой гемфайл. Bundle. Затем сделайте следующее:
Ссылка на ваше специальное действие печати в вашем представлении
<%= link_to 'print ticket', print_ticket_path %>
маршрут к специальному печатному действию в route.rb
match 'print_ticket', to: 'tickets#print_ticket'
действие, которое отправляет выведенный файл (изменяется в соответствии с вашими потребностями):
def print_ticket
if session[:token]
@pdf = generate_pdf(session[:token])
send_data(@pdf, :filename => "output.pdf", :type => "application/pdf")
end
end
private
def generate_pdf(token)
Prawn::Document.new do
formatted_text [ { :text=>"xxx.org", :styles => [:bold], :size => 30 } ]
move_down 20
text "Please proceed to the following web address:"
move_down 20
text "http://xxx.org/finder"
move_down 20
text "and enter this code:"
move_down 20
formatted_text [ { :text=>token, :styles => [:bold], :size => 20 } ]
end.render
end