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(""""