2015-08-10 10 views
5

Vorrei mettere alcune statistiche proprio di fronte al mio sito, come:stampa conteggio modello nella vista (MVC)

# jobs/index.html.haml 
.panel 
    .panel-heading 
     %h4 Statistics 
    .panel-body 
     .col-md-9.col-xs-9 
      %h5.pull-left Users 
     .col-md-3.col-xs-3 
      %h5.pull-right= @usercount 

     .col-md-9.col-xs-9 
      %h5.pull-left Companies 
     .col-md-3.col-xs-3 
      %h5.pull-right= @companycount 

     .col-md-9.col-xs-9 
      %h5.pull-left Categories 
     .col-md-3.col-xs-3 
      %h5.pull-right= @categorycount 

     .col-md-9.col-xs-9 
      %h5.pull-left Total offers gathered 
     .col-md-3.col-xs-3 
      %h5.pull-right= @jobcount 

Al momento queste variabili sono tutti impostati nel controllore:

# controller: jobs, action: index 
@jobcount = Job.count 
@usercount = User.count 
@categorycount = Category.count 
@companycount = Job.distinct.count('company') 

ma credo che sia il modo peggiore per farlo in MVC. Qualcuno può dirmi come dovrebbe essere fatto?

+1

uso gemma Draper per decoratore sulla vista del modello vedere https://github.com/drapergem/draper –

+1

http://railscasts.com/episodes/286- draper un buon rail lanciato sul draper –

+1

beh, ho capito che ti senti male a violare la logica REST, ma se hai bisogno di ulteriori dati nell'indice dei lavori, basta caricarlo ... :) – apneadiving

risposta

1

vorrei andare con questo stile: @statistics = { job_count: Job.count, user_count: User.count, category_count: Category.count, company_count: Job.distinct.count('company') }

+0

Ora ho solo una variabile, beh, ma temo che non sia ancora la procedura migliore per importare dati da qualsiasi modello in un controller specifico, non credi? – 5208760

+0

Dipende, se hai solo bisogno di queste informazioni, perché preoccuparsi di creare un altro oggetto per questo? Basta caricarlo! – Frozenna

+1

In realtà trovo il modo migliore, ho chiesto ad altre persone e non è come violare le regole MVC, mentre generare decoratori è piuttosto eccessivo per questo scopo. Grazie per la tua opinione, @Frozenna! – 5208760

Problemi correlati