¿Cuál es la mejor manera de crear un título personalizado para páginas en una aplicación Rails sin usar un complemento?
ruby-on-rails
ruby
wusher
fuente
fuente
<title><%= (yield(:title) + " - " unless yield(:title).blank?).to_s + "This is always shown" %></title>
en el diseño y<% content_for :title, "Conditional title" %>
en las vistas.<h1><%= content_for(:title, "Title for specific page") %></h1>
, no veo nada en mi DOM (es decir, no tengo<h1></h1>
contenido). Sin embargo mi<title>Title for specific page</title>
está funcionando correctamente. ¿Algunas ideas?Aquí hay una opción simple que me gusta usar
En su diseño
Y en la parte superior de la plantilla de tu página (primera línea)
Debido a la forma en que se analizan el diseño y las plantillas de página, se evalúa el @ title = "Inicio" antes de representar el diseño.
fuente
La mejor práctica es usar content_for.
Primero, agregue un par de métodos de ayuda (es decir, pegue en app / helpers / application_helper.rb):
Luego, en su vista de diseño, simplemente puede usar:
... y en la vista misma:
De esta manera, tiene la ventaja de permitirle barajar donde pegue la etiqueta h1 para su título, y mantiene su controlador agradable y libre de molestas variables @title.
fuente
@content_for_title
?@content_for_title
. Debe ser(content_for(:title) + ' — ' if content_for?(:title)).to_s + 'My Cool Site'
. Luego, para establecerlo desde su punto de vista, solo<% content_for :title, 'My Page Title' %>
@content_for_title
es lo que solía suceder cuando lo usabascontent_for
, en el momento en que se escribió este comentario. Creo que este ya no es el caso, pero no he mirado recientemente. El comentario de Toby J es correcto para los Rails de hoy. Actualizaré mi respuesta original.Una mejora en @opsb y una forma más completa de @FouZ :
En
application.html.erb
:En el archivo view erb o su controlador:
fuente
Busque en
content_for
: http://railscasts.com/episodes/8fuente
Sin más detalles sobre el caso de uso o los requisitos que está tratando de satisfacer, puedo pensar en varias alternativas:
1) Cambie el título en una de sus páginas de diseño y consuma un método auxiliar almacenado en
application_helper.rb
Este enfoque le dará un título único para cada página de diseño.
2) Railscasts sugiere usar un parcial para cargar lo que aparece entre las etiquetas HEAD
3) Use las llamadas javascript / ajax para manipular el DOM si necesita cambiar el título después del evento de carga.
Tal vez realmente no quieras cambiar el contenido etiquetado por el
title
elemento. Tal vez realmente necesite una ruta de exploración de algún tipo, para que sus usuarios siempre sepan dónde están con respecto a la jerarquía de navegación de su sitio. Si bien lo hice bien con el complemento goldberg, estoy seguro de que hay otras formas de lograr la misma funcionalidad.fuente
Utilizo "nifty_layout" de nifty_generator que proporciona una variable de título que puedo llamar en la página usando:
<% title "Title of page" %>
También puedo utilizar
<% title "Title of page", false %>
el título para que solo se muestre en el título del navegador y no en la página en sí.fuente
También puede configurarlo en un before_filter en su controlador.
Luego puede establecer condiciones en el método set_title para establecer diferentes títulos para diferentes acciones en el controlador. Es bueno poder ver todos los títulos de página relevantes dentro de su controlador.
fuente
yo suelo
este complementoestos ayudantes de Rails escribí: http://web.archive.org/web/20130117090719/http://henrik.nyh.se/2007/11/my-rails-title-helpers/fuente
enfoque para la titulación de páginas utilizando el método content_for y un parcial
1) nombre parcial: _page_title.html.erb
2) Uso en application.html.erb dentro de la etiqueta de título
3) Uso en los respectivos * .html.erb excluyendo application.html.erb Solo pegue esto en cualquier .html.erb y proporcione el título de la página
fuente
En resumen, puedo escribir esto de la siguiente manera
fuente
Me gusta el método opsb, pero este método también funciona.
fuente
La mejor / limpia manera de hacer esto:
fuente
Me gustaría agregar mi variante bastante simple.
En el ApplicationController, defina este método:
Después de eso, puede llamar a get_title desde la etiqueta de título de su diseño. Puede definir un título más específico para su página definiendo la variable @action_title_name en sus acciones.
fuente