2014-01-17 5 views
1

Я работаю над секцией обмена сообщениями в приложении и имею некоторые проблемы с history.pushState. В принципе, у меня есть 2 представления, в которых перечислены все потоки, и один, чтобы показать один поток. Когда пользователь нажимает на поток (с установкой link to remote = true), рельсы отвечают на мой файл show.js.erb. Этот файл включает в себя:Использование history.pushState с рельсами ajax-запрос

$("#layout-body").html("<%=j render :partial => 'thread' %>"); 
    if (Modernizr.history) { history.pushState("test: testy", null, "<%=j raw message_thread_url(params) %>"); } 

В настоящее время, когда нажимается нить, адрес правильно обновляется/messages/ID. Однако, когда я нажимаю кнопку «Назад», URL-адрес меняется на/сообщения, но содержимое страницы не изменяется. Как мне сделать эту работу? Правильно ли я делаю это?

ответ

1

Вы должны ответить на событие popstate.

window.addEventListener("popstate", function(e) { 
    console.log(location.pathname); 
}); 
+0

Да, я прочитал что-то об этом, но мое понимание js ограничено, и я не уверен, как его использовать для обновления страницы при запуске события popstate. Я могу обновить url, но содержимое страницы либо одно и тоже, либо беспорядок raw js. – Dave

+0

Когда запускается событие «popstate», _you_ должен изменить содержимое страницы. Он не является автоматическим, как при нормальном действии кнопки «Назад». – nathanvda

+0

спасибо за ответ, но это все еще не отвечает на мой вопрос о том, как фактически перейти к изменению содержимого страницы. – Dave

Смежные вопросы