这是问题所在。
我的部分/模态中的代码_form.html.erb
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<%= f.submit 'Store Ticket', :class => 'btn btn-primary' %>
<%= f.submit 'Print Ticket', :name =>'Print Ticket ', :class => 'btn btn-primary', :id => 'print', :onclick => "$.print_page(#{@ticket.id});" %>
在tickets.js.erb
$(document).ready(function() {
$.print_page = function(val) {
var val,
left = ($(window).width() / 2) - (900 / 2),
top = ($(window).height() / 2) - (600 / 2);
window.open("tickets/print?id=" + val, null, "height=600,width=800,top=" + top + ",left=" + left + ",status=yes,toolbar=no,menubar=no,location=no");
};
$.reprint_page = function(val) {
var val,
left = ($(window).width() / 2) - (900 / 2),
top = ($(window).height() / 2) - (600 / 2);
window.open("./print?id=" + val, null, "height=600,width=800,top=" + top + ",left=" + left + ",status=yes,toolbar=no,menubar=no,location=no");
};
});
反过来打开我的/打印,打开弹出嵌入式java中的打印框
问题是当它打开时,它似乎在控制器存储字段之前弹出。所有字段都已存储,但在打印窗口中仍显示更新前的值。
我需要确保数据库已更新,然后调用页面打印票证?
我考虑在if @ticket.save
上播放它,但你似乎无法渲染两次,即重定向到主应用屏幕,并带有一个有焦点的弹出窗口。
关于如何最好地实现此功能的任何想法。目前它被击中和失败有时它在/print/html.erb中有更新的值,有时它有预更新值,所以我认为它触发太快,即在.save在控制器中完成之前。
如果我从控制台拨打$.print_page(15)
,一切都像梦一样。
还尝试用setTimeout()
包裹,延迟时间为2秒但是这根本不会从onclick事件触发,但是手动从控制台恢复文件???
感谢任何帮助