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
我的 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