Na sua opinião, faça algo assim:
<% content_for :title, "Title for specific page" %>
<!-- or -->
<h1><%= content_for(:title, "Title for specific page") %></h1>
O seguinte está no arquivo de layout:
<head>
<title><%= yield(:title) %></title>
<!-- Additional header tags here -->
</head>
<body>
<!-- If all pages contain a headline tag, it's preferable to put that in the layout file too -->
<h1><%= yield(:title) %></h1>
</body>
Também é possível encapsular as instruções content_for
e yield(:title)
nos métodos auxiliares (como outros já sugeriram). No entanto, em casos simples como este, eu gosto de inserir o código necessário diretamente nas visualizações específicas, sem auxiliares personalizados.
<title><%= (yield(:title) + " - " unless yield(:title).blank?).to_s + "This is always shown" %></title>
no layout e<% content_for :title, "Conditional title" %>
nas visualizações.<h1><%= content_for(:title, "Title for specific page") %></h1>
, não vejo nada no meu DOM (ou seja, não tenho<h1></h1>
conteúdo). No entanto, o meu<title>Title for specific page</title>
está funcionando corretamente. Alguma ideia?Aqui está uma opção simples que eu gosto de usar
No seu layout
E na parte superior do seu modelo de página (primeira linha)
Devido à maneira como o layout e os modelos de página são analisados, o @ title = "Home" é avaliado antes da renderização do layout.
fonte
A melhor prática é usar o content_for.
Primeiro, adicione alguns métodos auxiliares (por exemplo, cole em app / helpers / application_helper.rb):
Em sua exibição de layout, você pode simplesmente usar:
... e na própria exibição:
Dessa forma, você tem a vantagem de permitir que você embaralhe onde coloca a tag h1 do seu título e mantém seu controlador agradável e livre de variáveis @title irritantes.
fonte
@content_for_title
?@content_for_title
. Deveria ser(content_for(:title) + ' — ' if content_for?(:title)).to_s + 'My Cool Site'
. Então, para defini-lo da sua opinião, apenas<% content_for :title, 'My Page Title' %>
@content_for_title
é o que costumava acontecer quando você usavacontent_for
, no momento em que este comentário foi escrito. Acredito que esse não seja mais o caso, mas não olhei recentemente. O comentário de Toby J está correto no Rails de hoje. Vou atualizar minha resposta original.Uma melhoria no @opsb e uma forma mais completa do @FouZ 's:
Em
application.html.erb
:No arquivo view erb ou em seu controlador:
fonte
Veja em
content_for
: http://railscasts.com/episodes/8fonte
Sem mais detalhes sobre o caso de uso ou os requisitos que você está tentando satisfazer, posso pensar em várias alternativas:
1) Mude o título em uma das suas páginas de layout e consuma um método auxiliar armazenado em
application_helper.rb
Essa abordagem fornecerá um título exclusivo para cada página de layout.
2) O Railscasts sugere o uso de um parcial para carregar o que aparece entre as tags HEAD
3) Use chamadas javascript / ajax para manipular o DOM, se você precisar alterar o título após o evento de carregamento.
Talvez você realmente não queira alterar o conteúdo marcado pelo
title
elemento. Talvez você realmente precise de algum tipo de trilha de navegação, para que seus usuários sempre saibam onde estão com relação à hierarquia de navegação do seu site. Embora tenha me saído bem com a forma como o plug-in goldberg, tenho certeza de que existem outras maneiras de obter a mesma funcionalidade.fonte
Eu uso o "nifty_layout" de nifty_generator, que fornece uma variável de título que eu posso chamar na página usando:
<% title "Title of page" %>
Também posso usar
<% title "Title of page", false %>
o título para mostrar apenas no título do navegador e não na própria página.fonte
Você também pode configurá-lo em um before_filter no seu controlador.
Você pode então definir condições no método set_title para definir títulos diferentes para ações diferentes no controlador. É bom poder ver todos os títulos de páginas relevantes em seu controlador.
fonte
eu uso
este pluginesses ajudantes do Rails que escrevi: http://web.archive.org/web/20130117090719/http://henrik.nyh.se/2007/11/my-rails-title-helpers/fonte
abordagem para a titulação de páginas usando o método content_for e uma
1 nome parcial: _page_title.html.erb
2) Uso em application.html.erb na tag title
3) Uso no respectivo * .html.erb, excluindo application.html.erb Basta colocar isso em qualquer .html.erb e fornecer o título da página
fonte
Em resumo, posso escrever isso da seguinte maneira
fonte
Eu gosto do método opsb, mas esse método também funciona.
fonte
A melhor maneira / limpa de fazer isso:
fonte
Gostaria de adicionar minha variante bastante simples.
No ApplicationController, defina este método:
Depois disso, você pode chamar get_title na tag de título do seu layout. Você pode definir um título mais específico para sua página, definindo a variável @action_title_name em suas ações.
fonte