Working on a CMS, problem with Frontend

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

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. [email protected] wrote:

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


Ross R.
www.sorrylies.com

that worked, thanks so much

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

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. [email protected] wrote:

for artist in @artsists
www.sorrylies.com


Posted via http://www.ruby-forum.com/.


Ross R.
www.sorrylies.com

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

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. [email protected] wrote:


Ross R.
www.sorrylies.com

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

On 11/19/06, Matt M. [email protected] wrote:


Ross R.
www.sorrylies.com

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. [email protected] wrote:

Artist C - Album Name
Artist C - Album Name

On 11/19/06, Matt M. [email protected] wrote:

Posted via http://www.ruby-forum.com/.


Ross R.
www.sorrylies.com