可以在绘制Prawn PDF报告之前更新Rails应用程序中的数据库

时间:2016-03-31 01:14:18

标签: ruby-on-rails ruby pdf prawn

我的rails应用程序会更改项目的状态,但是当它这样做时,用户可能会遇到潜在的错误。我正在开发一种方法,允许用户覆盖这些错误,然后创建一个pdf报告,以便他们可以打印出来作为他们所做的收据。

以下是开发报告并完成每个项目操作的代码:

def report
  ids = params[:ids].split()
  @items = Item.order("id").where(id: ids)

  respond_to do |format|
    format.html
    format.pdf { prawnto(page_size: "A4", inline: true)}
  end

  @items.each do |item|
    item.action
  end
end

我的问题是,为了测试错误(例如,项目的不兼容状态),我需要在行动生效之前测试项。

到目前为止我完成的每项测试都表明在报告完成之前正在评估items.each do block。我的应用需要反向。

对于为什么会出现这种行为的任何帮助和/或解释都将非常感激。

1 个答案:

答案 0 :(得分:1)

控制器代码在执行任何渲染之前运行完成。移动订单在这里没有任何作用,因为您为pdf格式提供的块将被忽略,直到最后。由于您已经定义了它,因此没有义务立即执行它。

如果您确实首先需要它,请捕获报告的结果,然后在渲染方法中使用它:

# Execute the report immediately.
report_pdf = prawnto(...)

respond_to do |format|
  format.pdf { report_pdf }
end