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



我的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块进行评估。我的应用程序需要反向。

如能提供任何帮助和/或解释为什么会出现这种行为,我们将不胜感激。

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

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

# Execute the report immediately.
report_pdf = prawnto(...)
respond_to do |format|
  format.pdf { report_pdf }
end

最新更新