Problemas de navegação e título do PushState

Oi pessoal,

Para http://bustram-angers.fr/ (escrito em RoR), tive alguns problemas para lidar com Backbone e pushState.

Parênteses, se você não souber sobre visualizações fantasmas, verifique esta postagem: http://coenraets.org/blog/2012/01/backbone-js-lessons-learned-and-improved-sample-app/

Então, aqui está o problema: se você clicar em http://bustram-angers.fr/ e clicar na guia “Récents”, o conteúdo será o mesmo como se você tivesse digitado diretamente o URL em seu navegador, mas o o título não mudou.

Eu descobri um pequeno truque para consertar isso. Basicamente, tenho um modelo diferente para solicitações “regulares” e “pushState”.

Quando eu carrego uma nova página, não é apenas o conteúdo HTML, mas um objeto JSON passando o conteúdo, o título e a descrição.

app / controllers / application_controller.rb

layout :get_layout

protected

def get_layout
request
.xhr? ? params[:includeContext] == "true" ? "ajax" : nil : "application"
end

Tenho que passar explicitamente “includeContext = true” quando carrego uma nova página para evitar interferir com outras solicitações AJAX.

app / helpers / application_helper.rb

def title(page_title)
content_for
:title, page_title.to_s
end

def description(description)
content_for
:description, description.to_s
end

app / views / layouts / ajax.html.erb

{
"content": "<%= yield.gsub("n", " ").gsub(""""