2011-04-22 6 views
5

Estoy usando Moustache en Rails 3 con this gem y estoy golpeando una barricada cuando trato de usar Moustache en una instancia donde normalmente usaría yield :parameter.Rieles Rendimiento con parámetro en Bigote

<html> 
    <head> 
    <title><%= yield :page_title %></title> 
    </head> 
</html> 

Mostrar posterior vista:

<% content_for :page_title do %> 
    <%= SettingsList.site_title + " " + @post.title %> 
<% end %> 

¿Hay una manera de reproducir este comportamiento con el bigote? Parece que puede haber una manera de resolver esto cuando se compila la plantilla:

mustache = MustacheClass.new 
mustache[:yield_page_title] = content_for(:page_title) 

Pero parece que eso sería difícil de trabajar con mi configuración actual utilizando la gema mustache_rails3.

También estoy abierto a cualquier respuesta que señale una buena manera de evitar este enfoque yield por completo. Sería posible lanzar suficiente lógica en una etiqueta {{page_title}} para manejar todos mis diferentes casos de configuración del título, pero esto parece lejos de ser ideal.

Respuesta

0

Toda la lógica de sus plantillas de bigote debe colocarse en el archivo de vista. Por ejemplo, su plantilla show.html.mustache debe tener un archivo de vista de Ruby asociado llamado show.rb donde puede colocar cualquier lógica personalizada para la plantilla.

La plantilla usaría una llamada {{page_title}}

<html> 
    <head> 
    <title>{{page_title}}</title> 
    </head> 
</html> 

Y el archivo de vista definiría un método page_title para rellenar la plantilla

# inside show.rb 
def page_title 
    SettingsList.site_title + " " + @post.title 
end