# Working on a CMS, problem with Frontend

**URL:** <https://www.ruby-forum.com/t/working-on-a-cms-problem-with-frontend/76437>\
**Category:** Rails\
**Created:** [November 18, 2006, 9:59pm UTC](https://www.ruby-forum.com/t/working-on-a-cms-problem-with-frontend/76437 "2006-11-18T21:59:34Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![mattmcswain](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ecb155/32.png) [@mattmcswain](https://www.ruby-forum.com/u/mattmcswain)\
**Post date:** [November 18, 2006, 9:59pm UTC](https://www.ruby-forum.com/t/working-on-a-cms-problem-with-frontend/76437/1 "2006-11-18T21:59:34Z")

</div>

So I’m working on a CMS to help record labels manage artists, albums,  
and shows

So at the moment I have

Artist  
has\_many :albums  
has\_many :shows

Album  
belongs\_to :artist  
Show  
belongs\_to :artist

What I’m trying to do is create an action on the front end that will  
allow me to list all the Artist names (in the database it’s called  
artist), then under each artist name list all their shows and albums.  
I’ve been able to do this for individual pages with actions  
def showartist  
@artist = Artist.find(params[:id])  
end

so the address is /showartist/1 for example, then it will list the  
artist with ID 1, and the album and show with artist\_id 1.  
How could I include them all on one page?

thanks,  
Matt

---

<div class="post-metadata">

**Author:** ![mattmcswain](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ecb155/32.png) [@mattmcswain](https://www.ruby-forum.com/u/mattmcswain)\
**Post date:** [November 18, 2006, 10:19pm UTC](https://www.ruby-forum.com/t/working-on-a-cms-problem-with-frontend/76437/2 "2006-11-18T22:19:28Z")

</div>

in the controller:  
@artists = Artist.find(:all)

in the view:

for artist in @artsists  
for album in artist.albums  
…  
end  
for show in artist.shows  
…  
end  
end

On 11/18/06, Matt M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Album  
> @artist = Artist.find(params[:id])  
> Posted via [http://www.ruby-forum.com/](http://www.ruby-forum.com/).
> 
> >

–  
Ross R.  
[www.sorrylies.com](http://www.sorrylies.com)

---

<div class="post-metadata">

**Author:** ![mattmcswain](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ecb155/32.png) [@mattmcswain](https://www.ruby-forum.com/u/mattmcswain)\
**Post date:** [November 18, 2006, 10:29pm UTC](https://www.ruby-forum.com/t/working-on-a-cms-problem-with-frontend/76437/3 "2006-11-18T22:29:01Z")

</div>

that worked, thanks so much

---

<div class="post-metadata">

**Author:** ![mattmcswain](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ecb155/32.png) [@mattmcswain](https://www.ruby-forum.com/u/mattmcswain)\
**Post date:** [November 18, 2006, 11:06pm UTC](https://www.ruby-forum.com/t/working-on-a-cms-problem-with-frontend/76437/4 "2006-11-18T23:06:26Z")

</div>

is there a way to organize them by date? i have a field release\_date  
that i’d like to organize them by

Ross R. wrote:

> in the controller:  
> @artists = Artist.find(:all)
> 
> in the view:
> 
> for artist in @artsists  
> for album in artist.albums  
> …  
> end  
> for show in artist.shows  
> …  
> end  
> end
> 
> –  
> Ross R.  
> [www.sorrylies.com](http://www.sorrylies.com)

---

<div class="post-metadata">

**Author:** ![mattmcswain](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ecb155/32.png) [@mattmcswain](https://www.ruby-forum.com/u/mattmcswain)\
**Post date:** [November 19, 2006, 2:23am UTC](https://www.ruby-forum.com/t/working-on-a-cms-problem-with-frontend/76437/5 "2006-11-19T02:23:54Z")

</div>

Yes sure, you can pass in conditions to associated models.  
Try changing the line above to…

for album in artist.albums.find(:all, :order=\>“release\_date ASC”) or  
for album in artist.albums.find(:all, :order=\>“release\_date DESC”)

depending on which order they need to be in,

On 11/18/06, Matt M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > for artist in @artsists  
> > [www.sorrylies.com](http://www.sorrylies.com)
> 
> –  
> Posted via [http://www.ruby-forum.com/](http://www.ruby-forum.com/).
> 
> >

–  
Ross R.  
[www.sorrylies.com](http://www.sorrylies.com)

---

<div class="post-metadata">

**Author:** ![mattmcswain](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ecb155/32.png) [@mattmcswain](https://www.ruby-forum.com/u/mattmcswain)\
**Post date:** [November 19, 2006, 3:55am UTC](https://www.ruby-forum.com/t/working-on-a-cms-problem-with-frontend/76437/6 "2006-11-19T03:55:53Z")

</div>

could i do that somehow in the for artist tag?

like for artist in artist.albums.find(:all, :order=\>“release\_date ASC”)

so that it organized all the entries by release date, and shows the  
artist, but ignores their organizational structure

---

<div class="post-metadata">

**Author:** ![mattmcswain](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ecb155/32.png) [@mattmcswain](https://www.ruby-forum.com/u/mattmcswain)\
**Post date:** [November 19, 2006, 3:35pm UTC](https://www.ruby-forum.com/t/working-on-a-cms-problem-with-frontend/76437/7 "2006-11-19T15:35:00Z")

</div>

I want it to be like

Nov 1st  
Artist A - Album Name  
Nov 2nd  
Artist B - Album Name  
Nov 3rd  
Artist A - Album Name  
Nov 4th  
Artist C - Album Name

rather than

Nov 1st  
Artist A - Album Name  
Nov 3rd  
Artist A - Album Name  
Nov 2nd  
Artist B - Album Name  
Nov 4th  
Artist C - Album Name

because as it is, it first organizes by artist, then organizes by  
release date under the artist

Ross R. wrote:

> Not sure what you mean by that, have you got an example of what you  
> want to produce?
> 
> On 11/19/06, Matt M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:
> 
> > >
> 
> –  
> Ross R.  
> [www.sorrylies.com](http://www.sorrylies.com)

---

<div class="post-metadata">

**Author:** ![mattmcswain](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ecb155/32.png) [@mattmcswain](https://www.ruby-forum.com/u/mattmcswain)\
**Post date:** [November 19, 2006, 3:22pm UTC](https://www.ruby-forum.com/t/working-on-a-cms-problem-with-frontend/76437/8 "2006-11-19T15:22:39Z")

</div>

Not sure what you mean by that, have you got an example of what you  
want to produce?

On 11/19/06, Matt M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> >

–  
Ross R.  
[www.sorrylies.com](http://www.sorrylies.com)

---

<div class="post-metadata">

**Author:** ![mattmcswain](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ecb155/32.png) [@mattmcswain](https://www.ruby-forum.com/u/mattmcswain)\
**Post date:** [November 19, 2006, 3:46pm UTC](https://www.ruby-forum.com/t/working-on-a-cms-problem-with-frontend/76437/9 "2006-11-19T15:46:42Z")

</div>

Ok yes. So what you need to do is loop through the albums…  
Controller:  
@albums = Album.find(:all, :order=\>“release\_date ASC”)

View:  
\<%for album in @albums%\>  
\<%=album.release\_date%\>  
  
\<%=album.artist.name%\> - \<%=album.name%\>  
\<%end%\>

As you can see because an album belongs to an artist you can access  
this object with album.artist and then access any attribute within  
artist - i’ve guessed at name (album.artist.name)

Ross

On 11/19/06, Matt M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Artist C - Album Name  
> Artist C - Album Name
> 
> > On 11/19/06, Matt M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:  
> > –  
> > Posted via [http://www.ruby-forum.com/](http://www.ruby-forum.com/).
> 
> >

–  
Ross R.  
[www.sorrylies.com](http://www.sorrylies.com)
