Прокрутка страницы после рендеринга в Rails - PullRequest
1 голос
/ 15 апреля 2009

Есть ли способ прокрутки или перехода вниз по странице после ее рендеринга?

В частности, в моем действии контроллера есть ситуации, когда я хочу отправить пользователя в определенное место на странице. Если бы это была просто ссылка с другой страницы, я бы, вероятно, использовал идентификатор фрагмента URI - "http://blorg.com/page#id" - но это необходимо генерировать динамически в зависимости от некоторого условия.

Может быть, мне нужно каким-то образом использовать JavaScript (Prototype), но я не знаю, как вызвать функцию после завершения загрузки страницы, особенно из контроллера.

Ответы [ 3 ]

3 голосов
/ 15 апреля 2009

Вы действительно должны делать такие вещи по вашему мнению. В вашем контроллере вы должны оценить свое состояние, чтобы определить часть страницы, которую вы хотите показать, а затем передать результат в представление. После этого вы сможете использовать эту информацию в своем представлении, чтобы добавить небольшой фрагмент JavaScript в нижней части страницы, который выполняет что-то вроде следующего. Конечно, это не поможет, если у пользователя отключен JavaScript;)

Код контроллера:

def index
  # evaluate the condition
  @section = (rand*10).to_i
end

Посмотреть код просмотра:

<div id="#section1">some stuff</div>
....
<div id="#section9">other stuff</div>

<% if @section>0 %>
<script type="text/javascript">
// <!--
document.location.hash="#section<%= @section %>";
// -->
</script>
1 голос
/ 15 мая 2012

Если вы используете jQuery, ответ может быть следующим:

$("body").scrollTop($("#my-element").position().top;

Или, если вы хотите быть по-настоящему модным (рекомендуется), вы можете анимировать прокрутку сверху так:

$("body").animate({scrollTop: $("#my-element").position().top},1000);
0 голосов
/ 15 апреля 2009

вы можете прокрутить браузер до позиции вниз по странице, включив фрагмент фрагмента в URL, который ссылается на страницу. например http://example.com/index.html#section3 прокрутит страницу до элемента с разделом «id». Вы можете использовать этот идентификатор для ссылки, абзаца и т. д. браузер будет следить за тем, чтобы элемент был виден после рендеринга.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...