Rails 应用程序中的数据库更新,然后才能制定 Prawn PDF 报告

Database in Rails App updates before a Prawn PDF report can be drawn up

我的 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 块在报告完成之前正在评估。我的应用程序需要反向。

任何帮助and/or解释为什么会发生这种行为将不胜感激。

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

如果您确实需要先完成它,请捕获报告的结果,然后在呈现方法中使用它:

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

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