#jquery #ruby-on-rails-3
#jquery #ruby-on-rails-3
Вопрос:
Я разрабатываю веб-сайт с использованием Rails 3, и в этот момент я хотел прокрутить вверх после отображения сообщения об ошибке (которое отображается в верхней части страницы).
До сих пор я пробовал следующее из моего файла display_error_message.js.erb:
$('#general-messages').html("<%= escape_javascript(render :partial => 'shared/error_message', :object => flash[:error]) %>");
$('html, body').animate({scrollTop:0}, 100);
Это не сработало. Я имею в виду, что первая строка работала нормально, но не вторая.
После этой попытки я попытался написать следующий код (просто чтобы посмотреть, сработал ли он), на мой взгляд, и он действительно сработал:
$(document).ready(function () {
$('#to-top').click(function () {
$('html, body').animate({scrollTop:0}, 100);
});
});
Затем я понял, что это связано с событием document ready, но я не могу использовать его (я думаю) из моего файла js.erb, или, по крайней мере, это не имеет смысла для меня.
Не могли бы вы рассказать мне, как это сделать?
Комментарии:
1. Вы можете использовать готовый документ из js.erb. Вы пробовали это?
Ответ №1:
Вам разрешено помещать свой .js.erb
код в другой $(document).ready
блок. Когда документ загружен и ready
событие срабатывает, каждый переданный блок кода $(document).ready
будет выполнен по порядку.
Комментарии:
1. Я вызываю этот файл из действия контроллера, поэтому я не вижу, как это сделать. Не могли бы вы сказать мне, пожалуйста?
2. В этом файле используйте
$(document).ready(function () { $('html, body').animate({scrollTop:0}, 100); });
вместо$('html, body').animate({scrollTop:0}, 100);