2010-12-08 14 views
2

Ich versuche, eine PDF-Datei mit AJAX-Aufruf in Rails3 zu generieren. Der folgende Code generiert eine PDF-Datei, die ich mit PRAWN gem erstellt habe.Generate PDF-Datei mit AJAX-Aufruf

<%= link_to "Generate pdf", books_path(@book, :format => 'pdf') %> 

Ich möchte nicht Benutzer das PDF anzeigen, bis sie es bestellen. Das Ziel besteht also darin, eine PDF-Datei auf dem Server zu erstellen.

Alle Ideen oder Gedanken sehr geschätzt.

+2

Was wieder die Frage war? – edgerunner

+0

Lesen Sie weiter oben ... – safalmj

Antwort

0

Dank Ariejan. Ich habe Ihren Code wie folgt geändert und es hat genau das gemacht, was ich wollte.

<%= link_to "Generate Story Book", pdfbook_stories_path(:format => 'pdf'), :remote => true %> 

Und für den Controller,

def pdfbook 
    @stories = current_account.stories 
    respond_to do |format| 
     format.pdf {} 
    end 

Ende

1

Verwenden Sie dies, stellen Sie sicher, dass Ihre Remote-Aktion die PDF nicht zurückgibt, sondern einfach generiert und speichert sie auf dem Server.

link_to "Generate PDF", prepare_books_path(@book), :remote => true, :method => :put 

Dies wird in Rails 3 funktionieren, wenn Sie jQuery verwenden, stellen Sie sicher, lesen this article auf, wie die Dinge richtig einzurichten.

Ihre Controller-Aktion kann wie folgt aussehen:

def prepare 
    # Do your thing to generate the PDF 
    render :text => "PDF Generated", :status => 200 
end 

ich die PUT-Methode verwendet, weil Sie den Zustand Ihrer Daten zu verändern (zB Sie etwas Neues generieren, Sie wollen nicht einen Bot oder Crawler, um das automatisch aufzurufen).

0

Erstens, es schlägt mich, warum Sie etwas auf eine Anfrage wie das Generieren eines PDFs tun würden, wenn der Benutzer diese Aktion nicht erwartet. Ist es nicht besser, das PDF nur zu generieren, wenn der Benutzer danach fragt?

+0

Das Szenario meiner Anwendung ist etwas anders als das, was Sie denken Harish. Und ich finde es nicht wichtig, hier alles zu erklären. Danke trotzdem. – safalmj