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 を表示する必要があるかどうかを確認できるように、Growl が必要なメッセージをコントローラーのアクションに追加します。

だから、このようなもの:

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

Use jQuery's document.ready handler by passing $(...) a function.

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

This will prevent your code from executing until the DOM is loaded and jGrowl can be properly displayed.

于 2011-12-09T10:48:05.587 に答える