# Showing related table data in show.rhtml

**URL:** <https://www.ruby-forum.com/t/showing-related-table-data-in-show-rhtml/113944>\
**Category:** Rails\
**Created:** [September 6, 2007, 3:02pm UTC](https://www.ruby-forum.com/t/showing-related-table-data-in-show-rhtml/113944 "2007-09-06T15:02:55Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Stoop](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/f475e1/32.png) [@Stoop](https://www.ruby-forum.com/u/Stoop)\
**Post date:** [September 6, 2007, 3:02pm UTC](https://www.ruby-forum.com/t/showing-related-table-data-in-show-rhtml/113944/1 "2007-09-06T15:02:55Z")

</div>

I have been following a few Rails Beginner tutorials and have been  
able to get a good simple app up where I have a bunch of servers and I  
am tracking the number of users on those servers every week.

# I have been able to get the app running so that I can view the user counts for a Server - looks like this, which is displayed via the server model’s show.rhtml:

Server Name: EastWS2003

UserCounts:

# 300 302 305 315

So far so good, but rather than have that usercount table store the  
date of that report I have a third table that consists of an id field  
and a field called “weekending”, which stores that actual date.

The usercount table has a field called reportdate\_id which points to  
the reportdate table.

The result I want is to see something like this:

=================  
Server: NorthWM2k

UserCounts:

# 01/01/2007 300 01/08/2007 302 01/15/2007 305 01/22/2007 315

However I can’t figure out how to code this into the show.rhtml to  
pull in the actual date from the reportdate table. Here is the  
original code from show.rhtml that displays the user count.

\<% if @server.has\_usercounts? %\>

### User Counts
 \<% for usercount in @server.usercounts %\> \<% end %\> 

| \<%= usercount.users %\> |

\<% end %\>

Can anyone point me in the right direction?

---

<div class="post-metadata">

**Author:** ![Stoop](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/f475e1/32.png) [@Stoop](https://www.ruby-forum.com/u/Stoop)\
**Post date:** [September 6, 2007, 4:01pm UTC](https://www.ruby-forum.com/t/showing-related-table-data-in-show-rhtml/113944/2 "2007-09-06T16:01:11Z")

</div>

On Sep 6, 2007, at 9:01 AM, Stoop wrote:

> UserCounts:
> 
> 01/01/2007 300
> 
> ### User Counts
> \<% for usercount in @server.usercounts %\> \> \> \> \<% end %\> \> 
> 
> | \<%= usercount.reportdate.weekending.strftime('%m/%d/%Y') %\> | \<%= usercount.users %\> |
> 
> \> \<% end %\> \> \> Can anyone point me in the right direction?
> 
> Assuming that your models reflect the associations that you implied  
> (and that I’m interpreting them right).
> 
> class Server  
> has\_many :usercounts  
> end  
> class Usercount  
> belongs\_to :server  
> belongs\_to :reportdate  
> end  
> class Reportdate  
> set\_table\_name ‘reportdate’ # because you imply it’s not plural  
> has\_many :usercounts  
> end
> 
> But if this is a common thing, I’d suggest you also have a method:
> 
> class Usercount  
> def weekending  
> self.reportdate.weekending  
> end  
> end
> 
> Define your own format (in your environment.rb perhaps)
> 
> Time::DATE\_FORMATS[:stoop] = ‘%m/%d/%Y’
> 
> and in your view say:
> 
> \<%= usercount.weekending.to\_s(:stoop) %\>
> 
> Of course, you can replace :stoop with :mdy or anything else that  
> suits you.
> 
> -Rob
> 
> Rob B. [http://agileconsultingllc.com](http://agileconsultingllc.com)  
> removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![Stoop](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/f475e1/32.png) [@Stoop](https://www.ruby-forum.com/u/Stoop)\
**Post date:** [September 6, 2007, 4:45pm UTC](https://www.ruby-forum.com/t/showing-related-table-data-in-show-rhtml/113944/3 "2007-09-06T16:45:16Z")

</div>

That was it, perfect Rob, thanks very much.

---

<div class="post-metadata">

**Author:** ![Stoop](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/f475e1/32.png) [@Stoop](https://www.ruby-forum.com/u/Stoop)\
**Post date:** [September 11, 2007, 8:50pm UTC](https://www.ruby-forum.com/t/showing-related-table-data-in-show-rhtml/113944/4 "2007-09-11T20:50:35Z")

</div>

Rob helped me out and got me to the stage where I have the following  
output in show.rhtml

=================  
Server: NorthWM2k

UserCounts:

# 01/01/2007 300 01/08/2007 302 01/15/2007 305 01/22/2007 315

I modified this a bit because I wanted to be able to create new user  
counts at the bottom of the document as follows:

=================  
Server: NorthWM2k

UserCounts:

# 01/01/2007 300 01/08/2007 302 01/15/2007 305 01/22/2007 315

Date: \_\_\_\_\_\_\_\_ Users: \_\_\_\_\_\_\_\_\_

I managed to get it to work OK if I enter the ID number of reportdate,  
followed by the usercount.

However typing the number 39 instead of choosing 2007-08-31 from a  
drop down is not good GUI!!!

I am really struggling with the select statement that will allow me to  
choose an existing date from the reportdate table (displaying the  
weekending field).

In the cookbook application there is this code to display a category  
to choose from in that application as follows:

 \<% @categories.each do |category| %\> \<%= category.name %\> \<% end %\> 

So I am trying to map that to my server, usercount and reportdate  
table and figure out what needs to go where. Can anyone help me  
figure out how to populate the Date field on the form with the  
contents of the reportdate table, preferably having as a default value  
the last item added to the reportdate table?

I’m not sure whether reportdate stands on its own here or whether I  
can only refer to it via the usercount table.

Thanks for the help.
