2013-03-19 2 views
1

J'ai eu beaucoup de mal avec ceci:Ruby générer table à partir de la plage de dates

Pour une application RPI, tous mes résultats sont dans une table: résultats

Je suis en train de imprimer une table basée sur une plage de données spécifique: 2011-07-31..2012-07-01

Dans mon contrôleur:

class SeasonsController < ApplicationController 
    def s2012 
    @results = Result.all 
    @s2012 = Result.where(:date => (2011-07-31)..(2012-07-01)) 
    end 
end 

À mon avis:

<table> 
    <tr> 
    <th>Event ID</th> 
    <th>Date</th> 
    </tr> 
<% @s2012.each do |result| %> 
    <tr> 
    <td><%= result.event_id %></td> 
    <td><%= result.date %></td> 
    </tr> 
<% end %> 
</table> 

Cela ne sortie d'erreurs (petit miracle), mais rien ne s'affiche dans la vue. @results = Result.all imprime toute la table entière très bien. Mais comment puis-je le limiter à une plage de données spécifique?

Répondre

0

Je sais que vous essayez de faire tout cela ActiveRecordy, mais imo il est en fait moins lisible que si vous venez d'écrire la clause SQL where vous-même.

Result.where('date BETWEEN ? AND ?', 
      Date.parse('2011-07-31'), 
      Date.parse('2012-07-01')) 
+0

Cela a fonctionné, merci! Je me sens tellement mieux maintenant. J'ai d'abord essayé d'aborder cela avec SQL, mais je n'ai pas réussi à obtenir le formatage correct, et il s'est développé en un enregistrement actif pendant le temps passé à essayer de le comprendre. – Zigmister

0

peut-être essayer:

Date.parse('2011-07-31')..Date.parse('2012-07-01') 
0

Dans vos rails par exemple actuels penseront que vous faites arithmétique. Vous regardez une date entre le nombre 1973 et 2004. Au lieu de cela, vous voulez les convertir en objets date d'abord. Faites

@s2012 = Result.where(:date => DateTime.parse('2011-07-31')..DateTime.parse('2012-07-01')) 
Questions connexes