Prioridades de formato de renderização do Rails

Eu tive um problema com um dos meus projetos Rails onde JSON estava renderizando nos cabeçalhos de resposta de solicitações AJAX .get () em vez de HTML por padrão.

Era porque eu estava usando o gerador de scaffolding do Rails e a linguagem de templates slim. Descobri que o Rails prioriza a visualização de arquivos com base em sua extensão:

  • .html (ou .html.erb)
  • .json (ou .json.jbuilder)
  • . * (todo o resto, incluindo .slim)

O padrão do Rails era renderizar .json ao invés do meu arquivo .slim, e é por isso que, por padrão, o conteúdo das minhas solicitações AJAX .get () estava retornando “indefinido” e os navegadores estavam armazenando em cache versões JSON de minhas páginas em vez de versões HTML (replicado ao apertar o botão Voltar).

Isso pode ser resolvido de duas maneiras:

Primeiro, em seu arquivo de rotas, você pode especificar o formato padrão para renderizar.

resources :yourresourcename, defaults: {format: :html}

Segundo, exclua os arquivos de visão .json gerados pelo scaffolding Rails.

Isso provavelmente se aplica a arquivos .haml também, mas não testei essa suposição.