2012-02-25 3 views
7

私はsinatraアプリでインラインhamlテンプレートを使用しています。私はflash[:notice] =を使用する場合right.jsを使って、flash [:notice]の内容でdivを更新していますか?

#message 
    - if flash[:notice] 
    %section.notice= flash[:notice] 
    - if flash[:error] 
    %section.error= flash[:error] 

:私はこのようなセクションで@@layoutを持っている「こんにちは!」経路内で&リンクをクリックすると、次のページはうれしく「こんにちは」と言います。 div。

ここに問題があります。私はright.jsを使用してアプリにいくつかのAjaxを追加しています。 'は、(この部分は同様に動作します)ラックフラッシュの最高の状態で矛盾している。

ほとんどの時間、あなたは#contentのdivにそれを&負荷をリンク(.linkey)、JavaScriptのインターセプトの少しをクリックしてください#message 'divが再ロードされます&前のアクションのフラッシュが表示されます...次回リンクをクリックすると...時間の約80%、残りの時間は何も表示されません

012私は希望
"a.linkey".onClick(function(event) { 
    event.stop(); 
    $('content').load([ "/", this.get('id'), ].join("")); 
    $('message').load('/message'); 
}); 

はこのようなものです::

1)リンクをクリックし

2)リンク先(/ fooという)#content

にロードされ

このは私のjsです

3)#messageにメッセージが再ロードされます(flash[:notice] = "bar"から)

/foo & #messageディスプレイ「バー」私も $('message').load('/message');でこれを試してみました

を表示

4)#contentはなく、そのロード#messageに何もどちらかが「/メッセージ」(文字列ではない内容)と#messageを満たしていません。

私はここで何が起こっているのか知りたいですか?それはラックフラッシュかright.jsで何かですか?または、他の何か?必要に応じてより多くのコードを提供することができますが、基本的なフレームワークをはるかに超えているわけではありません。

答えて

1

コントローラのアクションで実行されているAJAX要求の場合、現在の要求に対してフラッシュメッセージを利用できるように、flash.nowを使用する必要があります。だからあなたの場合、flash.now[:notice] = "bar"

関連する問題