Кажется, что periodically_call_remote
устарел в Rails 3, какие-либо идеи о том, как достичь той же функциональности?
Rails 3 эквивалент для периодически_call_remote
Ответ 1
Я искал правильный способ сделать это с Rails 3, но теперь я уверен, что в Rails 3 нет эквивалента периодически_call_remote. Чтобы получить ту же функциональность, что и в jQuery, я использовал:
$(document).ready(
function(){
setInterval(function(){
$('#mydiv').load('/controller/action');
}, 3000);
});
Ответ 2
Если вы действительно хотите его использовать, вы можете установить устаревший плагин, который имеет этот метод:
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
Используйте setInterval
, чтобы периодически запускать функцию, которая вызывает вызов AJAX. Если вы делали это с помощью jQuery, это может быть что-то вроде:
var pollBackend = function() {
$.getJSON("/foo/bar/poll");
}
setInterval(pollBackend, 5000);
Это попытается опросить данный URL для данных JSON каждые 5 секунд.
Ответ 4
Если вы хотите продолжить использование prototype.js, вы можете сделать следующее:
<%= content_for :js do %>
new Ajax.PeriodicalUpdater("mydiv",
"/controller/action",
{ frequency: 5,
method: 'get' })
<% end %>
Подробнее о Ajax.PeriodicalUpdater здесь.
Ответ 5
Это то, что вам нужно для периодического вызова 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' ) ) %>");
Ответ 6
Это очень простое решение, с которым я столкнулся
<head>
<script type="text/javascript">
setTimeout("location.reload();",20000);
</script>
</head>