Rails打开Java Popup进行打印

时间:2013-09-25 15:10:41

标签: javascript jquery html ruby-on-rails ruby-on-rails-3.2

这是问题所在。

我的部分/模态中的代码_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事件触发,但是手动从控制台恢复文件???

感谢任何帮助

0 个答案:

没有答案