2009-08-21 16 views
7

Tengo una barra lateral que tendrá algo de lógica, similar a como una vista habla con un controlador. ¿Dónde pongo la lógica para el parcial? ¿Creo un nuevo controlador para el diseño y lo coloco allí?ruby ​​on rails logic for a partial in a layout

El diseño es para los usuarios que inician sesión, como un tablero de instrumentos. El tablero tendrá una barra lateral que muestra el mismo contenido dinámico en cada página. Dado que se muestra en cada página, quiero ponerlo en un parcial.

Estoy confundido sobre dónde ubicar los hallazgos y toda esa información.

Respuesta

8

Quizás haya una mejor manera de hacerlo, pero si está en la mayoría o en todas las páginas, podría crear un before_filter en su ApplicationController. Tendrá que llamar al skip_before_filter en los controladores/acciones que no necesitan los datos.

class ApplicationController < ActionController::Base 
    before_filter :load_sidebar_data 

protected 
    def load_sidebar_data 

    end 
end 

Si no lo necesita en la mayoría de las páginas que le sigue el método de poner en el ApplicationController, sólo añadiría lo antes filtro donde lo necesite.

+0

Andy, has sido de gran ayuda para mí en estos últimos dos días! ¡Gracias! – Ryan

+0

Tengo una barra lateral que es la misma en todas las páginas excepto en la página de inicio, y estoy usando este código para obtener los datos necesarios. Ahora me pregunto dónde está el lugar correcto para colocar el código de script de vista real. – jackocnr

1

Coloque el parcial en la carpeta de diseños. El nombre del archivo debería comenzar con un guión bajo Por ejemplo, "_mypartial.html.erb".

Luego, en sus puntos de vista, utilice el siguiente código para incluir el parcial

"miparcial" %>

Tenga en cuenta que no se incluye el guión bajo en el código rubí incrustado al especificar cuales parcial para rendir.