рельсы бесконечная прокрутка с kaminari, событие не запускается

Прошел бесконечный учебник по прокрутке Райана Бейтса и не понимаю, почему он не работает; / частичное не обновляется

localfeeds/show.html.erb

<div class="row">
        <div class="col-md-8">
            <div id="infinite-table">
            <%=render :partial => 'scribbles/scribbles', :locals => {:scribbles => @scribbles}%>
            </div>
        </div>
</div>
<%= paginate @scribbles %>

localfeeds.js.coffee

jQuery ->
     if $('.pagination').length
          $(window).scroll ->
                  url = $('.pagination .next a').attr('href')
                  if url &&  $(window).scrollTop() > $(document).height() - $(window).height() - 50
                          alert("test2")
                          $('.pagination').text('Fetching more products...')
                          $.getScript(url)
     $(window).scroll()  

localfeeds/show.js.erb

// Append new data
$('#infinite_table').append('<%= j render(:partial => 'scribbles/scribbles', :scribbles => @scribbles) %>');

<% if (@scribbles.current_page < @scribbles.num_pages) %>
$('.pagination').replaceWith('<%= j paginate(@scribbles) %>');
<% else %>
$('.pagination').remove();
<% end %>

Пожалуйста помоги

Safari HTML визуализирует html часть ошибки рендеринга


person Richardlonesteen    schedule 28.07.2014    source источник
comment
Убедитесь, что ваш JS загружается и работает, поместив console.log([string or param]) в начало и конец файлов JS/CS. Они должны появиться в консоли Firefox/Firebug или Chrome. Также проверьте консоль на наличие ошибок JS. Можете ли вы опубликовать отрендеренную разметку?   -  person A Fader Darkly    schedule 28.07.2014
comment
загружен localfeeds.js.coffee, переместил предупреждение («тест») наверх, и оно появилось, и оно появляется в firebug. добавление console.log([string or param]) в js вызывает ошибку, это единственная ошибка js, которую я получаю в firebug.   -  person Richardlonesteen    schedule 29.07.2014
comment
Извиняюсь, я хотел, чтобы [строка или параметр] была заменена любой строкой, например Woo! Сделал это! или параметр типа $('#infinite_table') или что-то в этом роде. Если вы поместите сложный объект в console.log, вы сможете перемещаться по нему в консоли.   -  person A Fader Darkly    schedule 29.07.2014
comment
по-прежнему не появляется никаких ошибок, указывающих на проблему   -  person Richardlonesteen    schedule 29.07.2014
comment
Если вы опубликуете отрендеренную разметку, я смогу найти любые ошибки селектора JQuery, которые вы, возможно, пропустили. А пока вы можете использовать console.log и консоль в качестве инструмента для анализа вашего кода. Знаете ли вы, выполняется ли localfeeds/show.js.erb? Вы также можете использовать console.log. Или предупреждение, если нужно ;)   -  person A Fader Darkly    schedule 29.07.2014
comment
кажется, что это работает, я могу запустить его следующим образом: '‹%= link_to_next_page(@scribbles, 'Следующая страница', :remote =› true)%›' . но локальный канал feeds.js.coffee, похоже, не регистрирует прокрутку вниз.   -  person Richardlonesteen    schedule 29.07.2014
comment
какой HTML генерирует этот link_to?   -  person A Fader Darkly    schedule 29.07.2014
comment
'‹p class=pagination› ‹a href=/localfeeds/1?page=2 data-remote=true rel=next›Следующая страница‹/a› ‹/p›'   -  person Richardlonesteen    schedule 29.07.2014
comment
Хорошо, вы получаете предупреждение, когда прокрутка достигает дна, как предполагает ваш код? Если вы замените поиск в этой части кода URL-адресом этой кнопки, это сработает? url = $('.pagination .next a').attr('href'); -> url = "/localfeeds/1?page=2". Наконец, мне нужно увидеть открытый тег <span class="next" в вашем html.   -  person A Fader Darkly    schedule 29.07.2014
comment
Нет, оповещение не появляется, но файл точно загружается, оповещение появляется при перемещении в самый верх файла :( вот следующая кнопка: ` ‹a href=/localfeeds/1? page=2 rel=next›Далее ›‹/a› `   -  person Richardlonesteen    schedule 29.07.2014
comment
Давайте продолжим обсуждение в чате.   -  person A Fader Darkly    schedule 29.07.2014


Ответы (2)


localfeeds/show.js.erb

// Append new data
$('#infinite_table').append(...

но в вашем HTML у вас есть:

<div id="infinite-table" ....

Первый использует _, второй -

РЕДАКТИРОВАТЬ:

Судя по вашим комментариям, ошибка в вашем коде обнаружения прокрутки. Попробуйте это и посмотрите на вывод консоли для подсказок:

jQuery ->
     console.log("Creating pagination callback")
     if $('.pagination').length
          console.log("Pagination detected")
          $(window).scroll ->
                  console.log("Scroll detected")
                  url = $('.pagination .next a').attr('href')
                  if url &&  $(window).scrollTop() > $(document).height() - $(window).height() - 50
                          console.log("Url found: " + url)
                          $('.pagination').text('Fetching more products...')
                          $.getScript(url)
                          console.log("Script loaded")
     $(window).scroll()  

Какие операторы журнала консоли ведут к записям в журнале консоли? Что происходит, когда вы прокручиваете страницу?

person A Fader Darkly    schedule 29.07.2014
comment
да, это была одна из проблем. Но он все еще не обновляется, когда я прокручиваю вниз. если я добавлю такую ​​кнопку '‹%= link_to_next_page(@scribbles, 'Следующая страница', :remote =› true)%›', она запускает show.js.erb, и ajax отображает другую страницу. - person Richardlonesteen; 29.07.2014
comment
Он не записал ни одного сообщения в development.log ;/ - person Richardlonesteen; 29.07.2014
comment
Вам нужно заглянуть во вкладку консоли инспектора вашего браузера. Предполагая, что вы используете Chrome, щелкните правой кнопкой мыши любой элемент и выберите «Проверить элемент». Вы получаете новую панель с несколькими вкладками, включая одну под названием «консоль». Загляните туда, пока вы загружаете страницу и прокручиваете ее. - person A Fader Darkly; 29.07.2014
comment
вот самая глупая вещь, из-за пробелов и отступов код не работал. Теперь это вроде как, [Журнал] Обнаружен прокрутка (localfeeds.js, строка 14) [Журнал] Обнаружен URL-адрес: /localfeeds/1?page=2 (localfeeds.js, строка 17) [Журнал] Сценарий загружен (localfeeds.js , строка 20) [Журнал] Обнаружена прокрутка (localfeeds.js, строка 14, x1472), но страница 2 не проходит :( - person Richardlonesteen; 29.07.2014
comment
Что происходит, когда вы вводите это в окно консоли? $.getScript('/localfeeds/1?page=2') - person A Fader Darkly; 29.07.2014
comment
если я пишу $.getScript('/localfeeds/1?page=2/3/4/5/6/7'), я получаю новый объект, и он отображает каракули. - person Richardlonesteen; 29.07.2014
comment
Я думаю, что решил это, была ошибка в show.js.erb. Все хорошо. СПАСИБО, СЭР !!!!!!! - person Richardlonesteen; 29.07.2014
comment
Я люблю счастливый конец. - person A Fader Darkly; 30.07.2014

Просто наблюдение, но где вызывается $(window).scroll() кроме одного раза в коде инициализации?

Код создает метод, если есть данные разбивки на страницы, а затем вызывает его один раз, независимо от того, где он вызывается снова? Также, если нет данных разбиения на страницы, первый вызов прокрутки сломается...

Я не могу разобрать это без дополнительного кода, и, возможно, у меня просто неполная картина.

person Ghoti    schedule 29.07.2014
comment
api.jquery.com/scroll window.scroll устанавливает обработчик. Немедленный вызов обеспечивает загрузку первой волны результатов, если это необходимо. - person A Fader Darkly; 29.07.2014
comment
спасибо - иначе это был бы один из тех d'oh моментов :) Интересно, есть ли какие-либо ошибки консоли, останавливающие эту загрузку/происходит ...? - person Ghoti; 29.07.2014
comment
dropbox.com/s/fg2qlaeflnrb8ax/development.log — это журнал разработки - person Richardlonesteen; 29.07.2014
comment
ActiveRecord::RecordNotFound - Не удалось найти Localfeed с id=[object Object]: похоже, может быть ошибка 500, которая может привести к поломке - person Ghoti; 29.07.2014
comment
[object Object] исходит из js — это означает, что объект используется там, где он ожидает строку или число - person A Fader Darkly; 29.07.2014
comment
Да, но это входит в интерпретатор JS как необработанная ошибка? Это может быть то, что ломает свиток ... - person Ghoti; 30.07.2014