Rails 3 эквивалентно для periodically_call_remote - PullRequest
22 голосов
/ 07 сентября 2010

Похоже, periodically_call_remote устарела в Rails 3, есть идеи, как добиться такой же функциональности?

Ответы [ 5 ]

25 голосов
/ 08 сентября 2010

Я искал правильный способ сделать это с помощью Rails 3, но теперь я уверен, что в Rails 3 нет эквивалента periodically_call_remote. Чтобы получить точно такую ​​же функциональность с помощью jQuery, я использовал:

$(document).ready(
  function(){
    setInterval(function(){
      $('#mydiv').load('/controller/action');
    }, 3000);
  });
5 голосов
/ 08 сентября 2010

Если вы действительно хотите его использовать, то вы можете установить устаревший плагин, который имеет следующий метод:

http://github.com/rails/prototype_legacy_helper

Rails теперь поддерживает UJS.

Проверьте эти ссылки для получения дополнительной информации о UJS в Rails 3:
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/

Надеюсь, это поможет!

3 голосов
/ 07 сентября 2010

Используйте setInterval для периодического запуска функции, которая вызывает вызов AJAX. Если вы делаете это с помощью jQuery, это может быть что-то вроде:

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

setInterval(pollBackend, 5000);

Это будет пытаться опрашивать данный URL для данных JSON каждые 5 секунд.

2 голосов
/ 24 июня 2011

Если вы хотите продолжить использовать prototype.js, вы можете сделать следующее:

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

Подробнее об Ajax.PeriodicalUpdater здесь .

1 голос
/ 08 марта 2011

Это то, что вам нужно для периодического вызова ajax, замените some_path собственным маршрутом RESTful:

<%= 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' ) ) %>");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...