Ho un sacco di controller con metodi che rendono la vista indice. Ciò mi porta a scrivere render :index
alla fine della maggior parte dei metodi. Ecco un esempioCome posso ASCIUGARE tutte queste chiamate al rendering: indice?
def index
@models = Model.find(:all)
end
def new_models
@models = Model.find_by_new(true)
render :index
end
def old_models
@models = Model.find_by_new(false)
render :index
end
Idealmente, vorrei solo spostare il codice di rendere in un dopo filtro, ma come il controller effettua una chiamata a rendere prima di andare al dopo filtro che non è un'opzione.
Ho un numero elevato di controller come questo, quindi una soluzione rimuoverà un sacco di codice ripetuto.
Questa app è attualmente ancora Rails 2.3, tuttavia, sarà aggiornata a Rails 3 nei prossimi mesi o due. Quindi, mentre preferirei una tecnica che funzioni su 2.3, le sole soluzioni di Rails 3 sarebbero comunque apprezzate.
solo una nota, cercare di evitare conascenza di significato per quanto possibile. (ho appena * avevo * a usa quella 'parola' per giorno, perche 'ho appena saputo della connascenza **: D **) Vedi http://scotland-on-rails.s3.amazonaws.com/1A03_JimWeirich-SOR.mp4 se interessato – Zabba
E' stata una bella chiacchierata. Grazie per averlo condiviso. Il mio esempio non è un codice che ho davvero scritto. Stavo solo inserendo un codice casuale senza molto per l'esempio. Sono contento di averlo fatto, però, altrimenti non avrei mai saputo della Conascenza :-) –