使用AJAX调用生成PDF文件

时间:2010-12-08 06:42:45

标签: ruby-on-rails ajax pdf

我正在尝试使用Rails3中的AJAX调用生成PDF文件。以下代码生成我使用PRAWN gem创建的PDF文件。

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

我不希望用户在订购之前查看PDF。因此,目标是在服务器中创建PDF文件。

任何想法或想法都非常感激。

3 个答案:

答案 0 :(得分:1)

使用此选项,请确保您的远程操作不返回PDF,但是简单生成并将其存储在服务器上。

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

这将适用于Rails 3.如果您使用的是jQuery,请务必阅读this article有关如何正确设置的信息。

您的控制器操作可能如下所示:

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

我使用了PUT方法,因为您正在改变数据的状态(例如,您正在生成新的内容,您不希望机器人或爬虫自动调用它)。

答案 1 :(得分:0)

首先,当用户不期望采取行动时,为什么你会在生成PDF等请求上做点什么,这让我很吃惊。在用户请求时只生成pdf不是更好吗?

答案 2 :(得分:0)

谢谢Ariejan。 我修改了你的代码如下,它就是我想要的。

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

对于控制器,

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