2010-08-18 23 views
7

Por ejemplo, quiero que mi barra lateral tenga varios contenidos dinámicos. Usar otro método me llevará a poner códigos de consulta en View, lo cual no es una buena idea. Me gustaría mantener cualquier consulta en mi controlador.Disposición de barra lateral dinámica con rieles

Actualmente como sé que hay varios ff. Método:

hacer Una compartido parcial -> No se donde poner la consulta

render :partial => "shared/sidebar" 

contenido Para -> detalles adicionales en el comentario

<%= yield :sidebar %> 
<% content_for :sidebar do %> 
    <a href="http://www.netscape.com">Netscape</a><br> 
    <a href="http://www.lycos.com">Lycos</a><br> 
    <a href="http://www.walmart.com">Wal Mart</a><br> 
<% end %> 

tercero es escribirlo directamente en el archivo de diseño .

Entonces, ¿cómo debo hacer esto?

+0

"Contenido para -> Todavía está en la vista" ¿Por qué? En mi humilde opinión, esta es la forma en que puede hacer esto y aún tener todas las consultas en el controlador, ¿por qué debería necesitar una consulta en la vista de esta manera? – jigfox

+0

Básicamente basado en mi comprensión. Se movió a la vista del controlador. Pero si es así, tendré que poner el código de consulta en cada controlador y poner el content_for en cada vista que quiero mostrar en la barra lateral. – DucDigital

Respuesta

9

SI desea esto en cada vista, puede colocar el método que rellena los datos necesarios en application_controller y usar un before_filter para activarlo.

before_filter :load_sidebar 

def load_sidebar 
    @data = Thingy.find(:all) 
end 

Luego su elemento parcial o content_for verifica @data y los procesos.

1

Si desea reducir la cantidad de código en su application_controller.rb, puede considerar utilizar la gema Cells.

Esto le permitiría definir su 'consulta' en un controlador de celda separado, y usted representaría el contenido para él usando algo como render_cell :sidebar, :myquery dentro de su vista.

Cuestiones relacionadas