В моем приложении Rails 3.2.3 у меня есть следующий код в application.html.erb для обновления всей страницы каждые 30 секунд:
<meta http-equiv="refresh" content="30">
Это работает хорошо (это внутренняя интрасеть, и мы должны убедиться, что все смотрят самую свежую информацию независимо от того, как долго они оставили страницу открытой на своем компьютере), и что-либо более сложное, такое как AJAX, может показаться ненужным.
То, что я хотел бы сделать, это иметь какое-то выражение «кроме», заключающее метатег, такое как:
<% unless page.contains('input') %>
<meta http-equiv="refresh" content="30">
<% end %>
Это предотвратит обновление страницы через 30 секунд, если страница содержит поле ввода формы. В настоящий момент страница обновится, даже если вы наполовину заполняете страницу.
Возможно ли что-нибудь подобное. Я понимаю, что приведенный выше пример кода никогда не сработает, это просто объяснение того, чего я пытаюсь достичь.
Одна из возможностей - проверить действие текущей страницы, как указано в документации :
<% current_page?(:action => 'new') %>
но я не совсем уверен, сработает ли это.