0

通知に関するSOに関する多くの質問があることは承知していますが、モデルイベントに基づいて通知を表示するためにjqueryをトリガーすることに触れたことはありません。表示がnoneに設定されたdivでラップされた通知があり、モデルからjqueryにアクセスして表示したいと思います。

30種類以上の通知がある場合、コントローラーのcreate.js.erbファイルにこのコード(ユーザーに通知を求めるプロンプトを表示する必要があるかどうかを確認する)を含めるのは面倒です。コールバックを使用することを強くお勧めします。

それは私が求めているものではないので、jqueryのshow/hideメソッドで応答しないでください。任意の入力をいただければ幸いです(jqueryのhide / showメソッドの説明以外の入力)。コールバックは次のとおりです。

  after_create :hundredrep

  def hundredrep
    unless Badge.where(:user_id => current_user.id, :name => "hundredrep", :category => "3").any?
        if current_user.reputation > 100 
            current_user.badges.create(:name =>"hundredrep", :category = "3")
        end
    end
  end

そして、上記のコールバックで呼び出されたいjquery:

$(document).ready(function() { 
    $(".browser_notice").slideDown(500);
});
4

1 に答える 1

0

サーバーからクライアントにデータをプッシュするには、次のいずれかの手法を使用する必要があります。

  • 定期的にXHR呼び出しをサーバーに送信して、更新をフェッチします(技術的にはプッシュではありません)
  • サーバーとの永続的な接続を開き、サーバーが必要なときにいつでもストリームにデータを書き込めるようにします(HTTPストリーミング/ firehose API)
  • データプッシュが必要になるまでサーバーがオープンにするXHRリクエストを送信します(HTTPロングポーリング)

必要な反応性のレベル(「リアルタイム」とは:1秒、10秒、30秒、1分?)に応じて、最初のアプローチが最も単純なアプローチです。HTTPストリーミングまたはロングポーリングの場合は、Cometアプローチ/ Goliath、NodeJS、Tornadoなどのイベント駆動型IOサーバーを採用する必要があります。PusherなどのプラグアンドプレイAPIも検討する必要があります

DRYabilityを確保するには、モデルコールバックまたはモデルオブザーバーを使用して、イベントをComet、データベース内のテーブル、Pusher、またはニーズに合ったソリューションにプッシュします。

于 2012-04-21T15:09:28.633 に答える