Как прокрутить вверх из файла * .js.erb

#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);