2013-06-19 3 views
0

Je suis à la recherche de conseils sur la façon de concevoir une application Web qui affiche une vue hebdomadaire pour une liste de tâches.Bon design pour incrémenter/décrémenter la vue hebdomadaire d'une liste de choses à faire?

La présentation actuelle est un tableau avec les jours de la semaine sous la forme de colonnes dont les éléments doivent être répertoriés ci-dessous. J'ai obtenu quelque chose de fonctionnel en calculant les dates d'en-tête dans le contrôleur avec:

@week_starting = Date.today.at_beginning_of_week if @week_starting.blank? 

autres en-têtes en semaine sont présentés par incrémenter @week_starting.

J'ai créé des variables d'instance individuelles telles que @to_do_on_mon, @to_do_on_tue, etc. pour montrer ce qui doit être fait ce jour-là (et ensuite itérer à travers eux pour lister les éléments). Voici un exemple de:

@to_do_on_mon = BatchTicket.where("Date(load_date) =?", @week_starting.strftime 

Comment pourriez-vous améliorer cette conception pour augmenter/diminuer facilement la semaine indiquée et la liste des éléments à faire?

+0

la seule résolution que vous avez est une semaine? Si tel est le cas, vous pouvez enregistrer l'année, le numéro de la semaine dans cette année et un jour dans l'année. –

Répondre

1

Tout d'abord, juste une préférence personnelle, mais je pense que ce serait le code plus agréable de changer la première ligne à ceci:

@week_starting ||= Date.today.at_beginning_of_week 

Il est plus court et il est plus clair.

Je ne suis pas sûr que je comprends ce que vous essayez de faire avec le Date(load_date) là, mais puisque vous avez ActiveSupport disponible, je serais probablement faire quelque chose plus facile à lire comme ceci:

@to_do_on_mon = BatchTicket.where date: (@week_starting + 0.days) 
@to_do_on_tue = BatchTicket.where date: (@week_starting + 1.days) 
# etc. 

Ou, selon sur ce que votre page/app ressemble, vous pouvez le faire dans une requête si vous devez:

BatchTicket.where('your date range').group_by { |b| b.date.strftime("%u") } 

retourne un tableau groupés en jours (1..7).

L'espoir qui aide

+0

Bonne suggestion sur || =. Déjà fait. En ce qui concerne le bit Date (load_date), c'est le seul moyen que j'ai trouvé pour localiser avec précision mes articles par date (http://stackoverflow.com/questions/16682526/why-is-my-model-where-returning-a -blank-array-when-im-sure-il-y-a des correspondances). Des suggestions sur la façon de mettre à jour la semaine montrée? – collenjones

+0

Oh, j'ai raté cette question. Je ne suis pas sûr d'avoir compris ce que signifie 'incrémenter/décrémenter la semaine' - Vous souhaitez afficher une vue hebdomadaire, puis paginer entre les semaines? – Amir

+0

Ce que je veux dire est que j'ai ma table actuelle que je calcule les en-têtes en utilisant @week_starting et puis l'incrémenter pour montrer Mar, Mer, etc. J'ai deux icônes < > que je voudrais montrer la semaine précédente/suivante quand cliqué, ce qui signifie 'week_starting' devrait -/+ 7 jours, puis actualiser la page. Je suis également ouvert à l'utilisation d'AJAX, mais je pensais que cela fonctionnerait d'abord pour apprendre comment. – collenjones

Questions connexes