2009-08-21 7 views
7

Ho una barra laterale che avrà una logica in esso, simile a come una vista parla con un controller. Dove inserisco la logica per il parziale? Creo un nuovo controller per il layout e lo metto lì?ruby ​​on rails logic per un partial in un layout

Il layout è per gli utenti connessi, come una dashboard. Il dashboard avrà una barra laterale che mostra lo stesso contenuto dinamico su ogni pagina. Dal momento che viene mostrato su ogni pagina voglio metterlo in un parziale.

Sono solo confuso su dove inserire le informazioni di ricerca e tutte quelle.

risposta

8

Forse c'è un modo migliore per farlo, ma se è sulla maggior parte o su tutte le pagine è possibile creare un before_filter sul tuo ApplicationController. Dovrai chiamare skip_before_filter sui controller/azioni che non hanno bisogno dei dati.

class ApplicationController < ActionController::Base 
    before_filter :load_sidebar_data 

protected 
    def load_sidebar_data 

    end 
end 

Se non ne hai bisogno sulla maggior parte delle pagine saresti ancora messo il metodo nel ApplicationController, che ci si aggiunge solo la prima del filtro dove serve.

+0

Andy, sei stato un grande aiuto per me in questi ultimi due giorni! Grazie! – Ryan

+0

Ho una barra laterale che è la stessa su tutte le pagine eccetto la homepage, e sto usando questo codice per prendere i dati richiesti - ora mi chiedo dove è il posto corretto dove inserire il codice dello script della vista reale? – jackocnr

1

Inserire il parziale nella cartella layout. Il nome del file dovrebbe iniziare con un carattere di sottolineatura Ad esempio, "_mypartial.html.erb".

Poi, nel vostro punto di vista, utilizzare il seguente codice per includere il parziale

"mypartial" %>

Si noti che non si include il carattere di sottolineatura nel codice ruby ​​incorporato quando si specifica che parziale rendering.