1

我已经设置了 jgrowl,一切似乎都正常工作。我目前必须按下一个按钮来触发消息出现在屏幕的右上角,如下所示:

<input type="button" onclick="$.jGrowl('Your transaction has been processed', { life: 10000 });" href="javascript:void(0);" value="Default"/>

我想要的是当我在控制器中重定向时,jgrowl 消息现在会自动弹出:

def ch_sum_total
    #....some processing stuff code....
    respond_to do |format|
        format.html { redirect_to(:back) }
        format.js {}
    end
end

我怎样才能做到这一点?

4

2 回答 2

2

我会将您想要咆哮的消息添加到控制器上的操作中,以便您可以查看是否必须显示 jGrowl。

所以是这样的:

def ch_sum_total
    #....some processing stuff code....

    flash[:notice] = 'Your transaction has been processed'

    respond_to do |format|
        format.html { redirect_to(:back) }
        format.js {}
    end
end

:back页面上你有类似的东西:

<script>
  $(function() {
    <% if flash[:notice] %>
      $.jGrowl('<%= escape_javascript(flash.discard(:notice)) %>', { life: 10000});
    <% end %>
  });
</script>
于 2011-12-09T11:06:53.333 回答
1

document.ready通过传递$(...)一个函数来使用 jQuery 的处理程序。

$(function() {
  $.jGrowl('Your transaction has been processed', { life: 10000});
});

这将阻止您的代码执行,直到 DOM 被加载并且 jGrowl 可以正确显示。

于 2011-12-09T10:48:05.587 回答