2011-12-09 1 views
1

セットアップjgrowlがあり、すべて正常に動作しているようです。私は現在、このような画面の右上に表示されるメッセージをトリガするためにボタンを押す必要があります:ページリダイレクトで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 

どうすればいいですか?

答えて

2

あなたがGrowlにしたいメッセージをコントローラに追加して、jGrowlを表示する必要があるかどうかを確認できます。

したがって、このような何か

:ただし、メッセージがすべてのページにポップアップし、

<script> 
    $(function() { 
    <% if flash[:notice] %> 
     $.jGrowl('<%= escape_javascript(flash.discard(:notice)) %>', { life: 10000}); 
    <% end %> 
    }); 
</script> 
+0

これは間違いなく "レールシィ"アプローチです。 –

+0

@Manuelは完璧に働いてくれてありがとう+1、私はjqueryを学ぶと思う、機能はちょうど素晴らしい、非常に高く評価されているので。 – Hishalv

1

$(...)に関数を渡すことで、jQueryのdocument.readyハンドラを使用します。

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

これにより、DOMがロードされ、jGrowlが正しく表示されるまでコードが実行されなくなります。

+0

おかげで、私はちょうどポップ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ページでは、あなたのようなものを持っていますレールのリダイレクト後に私はまだjqueryを学んでいるnoobの質問については申し訳ありません。もう少し説明できますか?もう一度あなたの助けに感謝します。 – Hishalv

関連する問題