У меня есть страница действия индекса, показывающая список элементов, разбитых на страницы с помощью Kaminari, и я добавил к ним функциональность ajax, и теперь я пытаюсь получить URL-адрес, чтобы он соответствовал с помощью pushState.
Мой вопрос заключается в том, как мне получить URL-адрес для перехода к методу pushState, когда мои ссылки на страницы выполняются через:
<%= paginate @coasters, remote: true %>
и представление javascript выглядит следующим образом:
$('.grid').html('<%= escape_javascript render(@coasters) %>');
$('.pagination').html('<%= escape_javascript(paginate(@coasters, remote: true).to_s) %>');
Мне нужно каким-то образом получить URL-адрес в качестве третьего аргумента pushstate из того, что я прочитал?
ОБНОВИТЬ:
Я изменил его на следующее:
$(document).ready(function() {
$(document).on('click', '.pagination a[data-remote=true]', function(e) {
history.pushState({}, '', $(this).attr('href'));
});
$(window).on('popstate', function () {
$('.grid').html('<%= escape_javascript render(@coasters) %>');
$('.pagination').html('<%= escape_javascript(paginate(@coasters, remote: true).to_s) %>');
});
});
$('.grid').html('<%= escape_javascript render(@coasters) %>');
$('.pagination').html('<%= escape_javascript(paginate(@coasters, remote: true).to_s) %>');
Итак, я думаю, что мой код теперь обходит рельсы jQuery UJS, фиксируя щелчок по удаленной истинной ссылке разбиения на страницы, и URL-адрес вроде работает.
Кажется, что URL-адрес иногда обновляется. Кнопка назад тоже не работает.
Есть идеи, где я ошибаюсь?
ОБНОВЛЕНИЕ 2:
Я переместил часть своего javascript в javascript на главной странице, а не в представление javascript:
$(document).on('click', '.pagination a[data-remote=true]', function(e) {
history.pushState(null, '', $(this).attr('href'));
});
$(window).on('popstate', function () {
console.log('popState started');
$('.grid').html('<%= escape_javascript render(@coasters) %>');
$('.pagination').html('<%= escape_javascript(paginate(@coasters, remote: true).to_s) %>');
});
После удаления материала popstate приведенный выше код отлично обновляет URL-адрес при нажатии на ссылки, но когда я добавляю материал popState обратно в postate, он вызывается, как только я обновляю страницу для тестирования, и моя область сетки заменяется текстовым выводом следующая строка на моей странице:
$('.grid').html('<%= escape_javascript render(@coasters) %>');
$('.pagination').html('<%= escape_javascript(paginate(@coasters, remote: true).to_s)
Как я могу заставить popstate работать правильно?
<%=j
как сокращение для<%= escape javascript
:) - person Arjan   schedule 10.01.2014