Rails 3 equivalent for periodically_call_remote

后端 未结 6 1268
刺人心
刺人心 2020-11-29 04:05

Seems like periodically_call_remote is deprecated in Rails 3, any ideas how to achieve the same functionality?

相关标签:
6条回答
  • 2020-11-29 04:29

    If you really want to use it, then you can install the legacy plugin which has this method:

    http://github.com/rails/prototype_legacy_helper

    Rails favors UJS now.

    Check out these links for more info on UJS in Rails 3:
    http://railscasts.com/episodes/205-unobtrusive-javascript
    http://www.simonecarletti.com/blog/2010/06/unobtrusive-javascript-in-rails-3/

    I did a short writeup on this in relation to prototype and the link_to_remote tag:
    http://www.cowboycoded.com/2010/07/20/replacing-link_to_remote-with-ujs-in-rails-3-prototype/

    Hope this helps!

    0 讨论(0)
  • 2020-11-29 04:31

    This is a very simple solution I came across

    <head>
        <script type="text/javascript">         
          setTimeout("location.reload();",20000);
        </script>
    </head>
    
    0 讨论(0)
  • 2020-11-29 04:32

    Use setInterval to periodically run a function which invokes an AJAX call. If you were doing it with jQuery, it might be something like:

    var pollBackend = function() {
      $.getJSON("/foo/bar/poll");
    }
    
    setInterval(pollBackend, 5000);
    

    This would attempt to poll the given URL for JSON data every 5 seconds.

    0 讨论(0)
  • 2020-11-29 04:48

    This is what you need for a periodic ajax call, replace some_path with your own RESTful route:

    <%= javascript_tag do -%>
    $(document).ready(
      function(){
        setInterval(function(){
          $.ajax({
            url: "<%= some_path %>",
            type: "GET",
            dataType: "script"
        });
      }, 60000 );
    });
    <% end -%>
    

    The index.js.erb file would look like this:

    $('#mydiv').html("<%= escape_javascript( render( :partial => 'my_partial' ) ) %>");
    
    0 讨论(0)
  • 2020-11-29 04:49

    I was searching for the right way to do it with Rails 3 but now I am confident that there is no equivalent to periodically_call_remote in Rails 3. To get the exact same functionality done with jQuery, I used:

    $(document).ready(
      function(){
        setInterval(function(){
          $('#mydiv').load('/controller/action');
        }, 3000);
      });
    
    0 讨论(0)
  • 2020-11-29 04:54

    If you want to continue using prototype.js, so you can do what follows:

    <%= content_for :js do %>
      new Ajax.PeriodicalUpdater("mydiv", 
        "/controller/action", 
        { frequency: 5, 
          method: 'get' })
    <% end %>
    

    More about Ajax.PeriodicalUpdater here.

    0 讨论(0)
提交回复
热议问题