2

Rails 3.2.6を使用してアプリケーションを構築していますが、一定の時間間隔が経過すると、ページの一部が自動的にリロードされる機能を作成したいと考えています。これは私がしたことです:

  1. リロードされたコンテンツがあるはずの_hottest_beepというパーシャルを作成しました

  2. 私はメインページのパーシャルをそのように呼びました

    <div class="update_beep">
    <%=render :partial=>"hottest_beeps"%>
    </div>
    
  3. main.js.erbファイルを作成しました

    $(".update_beep").html("<%= escape_javascript(render("hottest_beeps"))%>")
    
  4. メインページにリンクを追加しました。そのリンクをクリックすると、部分的に自動的にリロードされます。

    <span ><%=link_to'View',{:controller=>'users',:action=>'main'},:remote=>true,:class=>'auto_click'%>
    </span>
    
    <div class="update_beep">
    <%=render :partial=>"hottest_beeps"%>
    </div>
    
  5. auto_click次に、1秒ごとに自動的にクリックするJavaScriptファイルを作成しました

    var fsecs = 1000;
    
    function feedTimer1()
    {
    
        if (fsecs == 0)
        {
            $('.auto_click').click();
            fsecs =1000;
            self.status = fsecs
            ftimerRunning = true
            ftimerID = self.setTimeout("feedTimer1()")
        }
        else
        {
            self.status = fsecs
            fsecs = fsecs - 1
            ftimerRunning = true
            ftimerID = self.setTimeout("feedTimer1()")
        }
    }
    
    
     window.onload = feedTimer1();
    

しかし、クリックすら機能しないようです。ページをロードしても部分は同じままですが、リンクをクリックすると自分自身が機能します。

注:application.html.erbファイルのauto_click.jsファイルも呼び出して、ページにロードする必要があります

4

2 に答える 2

1

あなたのjsを理解しているかどうかはわかりませんが、これはうまくいくはずです:

$(function() {
  function tick() {
    $(".auto_click").click();
    setTimeout(tick, 1000);
  }
  tick();
};

補足として、関数内から setTimeout を実行しないでください。リクエストが山積みになってしまうためです。このためのコードが必要な場合はお知らせください。

編集:そのために、これを使用できます:

$(function() {
  window.auto_click_tick = function() {
    $(".auto_click").click();
  }
  window.auto_click_tick();
};

js.erb ファイルに、これを追加します。

setTimeout(window.auto_click_tick, 1000);
于 2012-08-12T17:24:10.233 に答える
0

助けてくれてありがとう。しかし、何時間も働いた後、私は最終的にそれを解決しました。問題は、jqueryファイルにバグがあることでした。それを変更すると問題が解決しました:)

于 2012-08-14T19:48:58.443 に答える