【问题标题】:generate pdf if object is persisted如果对象被持久化,则生成 pdf
【发布时间】:2013-05-21 20:05:41
【问题描述】:

我正在使用wicked_pdf gem 生成一个pdf文件:

我只想在对象持久/保存在数据库中时生成 pdf:

类似这样的:

def new
  @invoice = Invoice.new
  respond_to do |format|
    format.html # new.html.erb
  end
end

def create
  @invoice = Invoice.new(invoice_params)
  respond_to do |format|
    if @invoice.save
      format.html { redirect_to invoice_path(@invoice), notice: "Yesss!") }
    else
      format.html { render action: new, :alert => "Oops :(" }
    end
    format.pdf do
      @example_text = "exampletext"
        render :pdf => "file_name",
               :template => 'path/to/template'
    end
  end
end

但使用此代码仅响应 html。我想在里面生成pdf:

if @invoice.save
  #generate the pdf here
  format.html { redirect_to invoice_path(@invoice), notice: "Yesss!") }
else

我该怎么做,我可以使用回调吗?

【问题讨论】:

  • 您想要在 HTML 文档中嵌入 PDF 文件,还是只想呈现 PDF?如果是后者,您想将 format.save 更改为您的 pdf 块而不是 .html,我相信它会起作用。

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.2 wicked-pdf


【解决方案1】:

像这样删除respond_to 块:

def create
...
  if @invoice.save
   render :pdf=>"file_name",
   :template=>'/path/to/template'
  else
    render action: "new", :alert=>"Oops :("
  end
 end

【讨论】:

  • 谢谢,但此修复无法正常工作!我得到Completed 406 Not Acceptable
  • @hyperrjas 我不确定这是否适用于您,但我删除了我的 .csv 文件上的响应块并且它有效。我将更新我的答案。
  • 谢谢你最后的修复工作正常:)。问题出在respond_to 块上。谢谢!
猜你喜欢
  • 2017-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-21
  • 2014-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多