开发者

Generate PDF file using AJAX call

开发者 https://www.devze.com 2023-01-29 15:38 出处:网络
I\'m trying to generate a PDF file using AJAX call in Rails3. The following code generates a PDF file which I have created using PRAWN gem.

I'm trying to generate a PDF file using AJAX call in Rails3. The following code generates a PDF file which I have created using PRAWN gem.

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

I do not want user to view the PDF until they order it. So, the goal is to create开发者_JAVA技巧 a PDF file in the server.

Any ideas or thoughts much appreciated.


Use this, make sure your remote action does not return the PDF, but simple generates and stores it on the server.

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

This will work in Rails 3. If you're using jQuery, make sure to read this article on how to set things up correctly.

Your controller action may look like this:

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

I used the PUT-method because you are altering the state of your data (e.g. you are generating something new, you don't want a bot or crawler to automatically call that).


Firstly, it beats me why you would do something on a request like generating a PDF, when the user is not expecting that action. Isn't better to only generate the pdf when the user requests for it?


Thanks Ariejan. I modified your code as following and it did just what I wanted.

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

And for the controller,

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

end

0

精彩评论

暂无评论...
验证码 换一张
取 消