如何在后台创建 wicked_pdf 文档

How to create a wicked_pdf document in background

我想使用 wicked_pdf 创建一个 pdf 文档。但是,所有教程都使用 'show' 方法进行。我想在 saving/creating 个项目后立即这样做。这是我的创建方法。

def create_item
item = Item.new
bcode = params[:bcode]

item.variant_id = params[:variantid]
item.brand_id = params[:brandid]
item.luitem_id = params[:itemid]
item.createdate = Date.today
item.user_id = session[:user_id]
ditem.save

gen_barcode
end`

这是我想要生成 pdf 的方式

  def gen_barcode
   code = Bcode.maximum(:id)
    respond_to do |format|
     format.html
     format.pdf do
      render pdf: "item_#{code}",
           template: 'layouts/gen_barcode.pdf.erb',
           show_as_html: params[:debug].present?,
           outline: {   outline:           true,
                        outline_depth:     50 },
           margin:  {   top:               35,
                        bottom:            35,
                        left:              35,
                        right:             35 }
  end
end
end

我可以通过 http://localhost:3000/genbcode/1.pdf 生成 pdf 如何在 create_item 方法后调用 gen_barcode 生成 pdf?

有几种方法可以做到这一点。首先,您可以在成功保存项目后重定向到 show 方法。该方法将如下所示:

def create
  @item = Item.new(item_params)
  if @item.save
    redirect_to item_path(@item, format: :pdf)
  else
    render "new"
  end
end

这将重定向到 ItemControllershow 方法,在那里您可以像在 gen_barcode 方法中那样渲染 pdf。这是一种更可取的方式,因为每个方法都有自己的业务。方法create响应创建对象,方法show显示结果

其次,您可以将 respond_to 添加到您的创建方法中。

  def create
    respond_to do |format|
      format.pdf do
        render pdf: "item_#{code}",
        template: 'layouts/gen_barcode.pdf.erb'
      end
    end
  end

并且您需要在表单中设置正确的格式

<%= form_for(@item, format: :pdf) do |form| %>
  ...
  <%= form.submit "Submit" %>
<% end %>