2015-11-09 5 views
0

Я знаю, что эта проблема является типичной проблемой для веб-разработки.
Но я застрял в этой проблеме почти 3 часа.
Если вы можете мне помочь или дать мне подсказки, я ценю это.Прокрутить к примеру

Что я хочу сделать
После пользователь нажал на ссылку, автоматически перейти к определенной метке в следующем окне.

Последовательность
1. Пользователь на TaskWindow
2. Пользователь нажимает на ссылку, чтобы HistoryWindow на TaskWindow
3. Применение показывает HistoryWindow и перейти к конкретной метке автоматически.

Environment
рубин 2.1.1p76/Rails 4.2.0/CoffeeScript/Javascript

Что я пытался
Я попробовал два пути.

1: Использовать активы/JavaScripts/histories.coffee

активы/JavaScripts/histories.coffee

ready = -> 
    scrollToElement($('.history-group-<%= @group_histories.count-1 %>')); 

scrollToElement = (ele) -> 
    $(window).scrollTop(ele.offset().top).scrollLeft(ele.offset().left) 

Проблема

  • Ошибка при <%= @group_histories.count-1 %> (Но если я пишу буквальный переменная, она работает.)
  • Другие контроллеры загружают этот файл кофе.

2: Использование истории/index.html.erb

истории/index.html.erb

.... 
<%= javascript_tag do %> 
    function scrollToElement(ele) { 
     $(window).scrollTop(ele.offset().top).scrollLeft(ele.offset().left); 
    } 

    scrollToElement($('.history-group-<%= @group_histories.count-1 %>')); 
<% end %> 

Проблема

  • Не работает. Ничего не случилось.

Вопрос
Как метод лучше реализовать?

ответ

2

Что ваше ищут якорные ссылки:

<a href="/foo#bar">Foo</a> 

Это будет автоматически прокручивать к элементу с идентификатором атрибутом bar, когда браузер загружен /foo.

Если нет соответствующего элемента, браузер будет прокручиваться вверх (по умолчанию это так или иначе).

Чтобы создать якорь с рельсами маршрутизации помощников:

link_to("Index", foos_path(anchor: 'bar')) 
+0

Спасибо за советы. Он корректно работает с литеральным значением, например '

  • <% = link_to 'History', histories_path (anchor: 'history-group-18')%>
  • '. Если я хочу изменить его динамический путь, я предполагаю, что мне нужно писать как '
  • <% = link_to 'History', histories_path (anchor:" history-group-#{@group_histories.count-1} ")%>
  • ' но TaskWindow на данный момент не имеет варианта group_histories из-за ненужного запроса. Должен ли я запрашивать этот вариант для БД только для этой проблемы? – dosuken123

    +0

    Я действительно не понимаю ваш вопрос. Одним из важных факторов, которые, как я думаю, вам не хватает, является то, что хеш URL-адресов прозрачен для сервера по дизайну. Это означает, что вы не видите на сервере, если URL-адрес запроса содержит хэш. – max

    +0

    Еще одна проблема, с которой вы столкнулись, заключается в том, что ваш скрипт использует '<% = @ group_histories.count-1%>', однако активы в Rails скомпилированы во время развертывания, а не за запрос, поскольку это будет очень медленно. Таким образом, счет быстро устанет. – max