So, I have a "schedules" table and a "hours" table, joined by a "hours_schedules" table. Think of the hours table as a category for when people will schedule themselves to work, which happens in weekly increments. At any given hour, there will be X number of people working. I need to represent each worker with an asterisk symbol in the weekly view. For example, PEOPLE WORKING Sunday ==========12:00 am: ** 1:00 am: ***** 2:00 am: ****** 3:00 am: ****** etc.. How can I create a loop that can replace my extremely un-DRY queries in my controller? # Controller ####################### @contract1_schedules = Hour.find(1).schedules.find(:all, :conditions => "week = ''#{@woy}''") @contract2_schedules = Hour.find(2).schedules.find(:all, :conditions => "week = ''#{@woy}''") @contract3_schedules = Hour.find(3).schedules.find(:all, :conditions => "week = ''#{@woy}''") @contract4_schedules = Hour.find(4).schedules.find(:all, :conditions => "week = ''#{@woy}''") @contract5_schedules = Hour.find(5).schedules.find(:all, :conditions => "week = ''#{@woy}''") etc... @contract168_schedules Hour.find(168).schedules.find(:all, :conditions => "week = ''#{@woy}''") @woy is a calculated value for next week and is compared to the week number stored with the parent schedule so that I can display only a certain week at a time. Each of these queries represent a collection of schedules for that hour. ################################# # View ########################### <h1>People Working</h1> <h2>Sunday</h2> <%= link_to "12:00am", :controller => "hours", :action => ''list'', :id => ''1'' %>: <% for contract12_schedule in @contract12_schedules %> * <% end %><br /> <%= link_to "1:00am", :controller => "hours", :action => ''list'', :id => ''2'' %>: <% for contract1_schedule in @contract1_schedules %> * <% end %><br /> etc... ################################# --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
# Schema ##################### mysql> show tables; +-------------------------------+ | Tables_in_sandbox_development | +-------------------------------+ | contracts | | hours | | hours_schedules | | schedules | | statuses | +-------------------------------+ mysql> describe schedules; +-------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | contract_id | int(11) | YES | | NULL | | | week | int(11) | YES | | NULL | | | year | int(11) | YES | | NULL | | | name | varchar(255) | YES | | NULL | | +-------------+--------------+------+-----+---------+----------------+ 5 rows in set (0.01 sec) mysql> describe hours; +-------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+-------+ | id | int(11) | YES | | NULL | | | name | varchar(255) | YES | | NULL | | +-------+--------------+------+-----+---------+-------+ 2 rows in set (0.00 sec) mysql> describe hours_schedules; +-------------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+---------+------+-----+---------+-------+ | schedule_id | int(11) | YES | | NULL | | | hour_id | int(11) | YES | | NULL | | +-------------+---------+------+-----+---------+-------+ 2 rows in set (0.00 sec) --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
It finally clicked for me... # View ############################ <h2>Sunday</h2> <% for hour in @sunday_hours %> <% @schedule_hours Hour.find(hour.id).schedules.find(:all, :conditions => "week ''#{@woy}''") %> <%= link_to "#{hour.name}", :controller => "hours", :action => ''list'', :id => hour.id %>: <% for schedule in @schedule_hours %> * <% end %> <br /> <% end %> <br /> # Controller ######################### def list # Finds next weeks beginning on Sunday @now = Time.now @next_week = @now.next_week - 1.day @woy = @next_week_date.cweek # Creates an array of hours for each day of the week @sunday_hours = Hour.find(:all, :conditions => "id > ''0'' AND id < ''25''") @monday_hours = Hour.find(:all, :conditions => "id > ''24'' AND id < ''49''") etc.... end --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---