Rails 3等效于periodic_call_remote

时间:2010-09-07 19:24:03

标签: ruby-on-rails ruby-on-rails-3

在Rails 3中似乎不赞成使用periodically_call_remote,任何想法如何实现相同的功能?

6 个答案:

答案 0 :(得分:25)

我正在寻找使用Rails 3的正确方法,但现在我确信在Rails 3中没有与periodic_call_remote等效的东西。 为了获得与jQuery完全相同的功能,我使用了:

$(document).ready(
  function(){
    setInterval(function(){
      $('#mydiv').load('/controller/action');
    }, 3000);
  });

答案 1 :(得分:5)

如果您真的想使用它,那么您可以安装具有此方法的旧插件:

http://github.com/rails/prototype_legacy_helper

Rails现在赞成UJS。

查看这些链接,了解有关Rails 3中UJS的更多信息:
http://railscasts.com/episodes/205-unobtrusive-javascript
http://www.simonecarletti.com/blog/2010/06/unobtrusive-javascript-in-rails-3/

我对原型和link_to_remote标签进行了简短的写作:
http://www.cowboycoded.com/2010/07/20/replacing-link_to_remote-with-ujs-in-rails-3-prototype/

希望这有帮助!

答案 2 :(得分:3)

使用setInterval定期运行调用AJAX调用的函数。如果你使用jQuery,它可能是这样的:

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

setInterval(pollBackend, 5000);

这将尝试每5秒轮询给定的JSON数据URL。

答案 3 :(得分:2)

如果您想继续使用prototype.js,那么您可以执行以下操作:

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

有关Ajax.PeriodicalUpdater here的更多信息。

答案 4 :(得分:1)

这是定期ajax调用所需要的,用你自己的RESTful路径替换some_path:

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

index.js.erb文件如下所示:

$('#mydiv').html("<%= escape_javascript( render( :partial => 'my_partial' ) ) %>");

答案 5 :(得分:0)

这是我遇到的一个非常简单的解决方案

<head>
    <script type="text/javascript">         
      setTimeout("location.reload();",20000);
    </script>
</head>