Quick question about joins, etc.

uhm whats that array containing?

try sth. like
venue = VenueClasses.find(params[:id])
places = venue.places.find :all, :conditions => ["name =

though i'm just guessing as your explanation about what to find and
what parameters you exactly get was not that precise .

1) parameter holding the Venue Type is params[:type]
2) cloumn in venue_classes tabel holding the type i named "type"
3) Letter for searching the Place names is in params[:place]
4) Relations:
VenueClasses has_and_belongs_to_many :places
Places has_and_belongs_to_many :venue_classes

#prepare the Place letter for wildcard-matching in a LIKE statement
placename = params[:place] + '%'
#get the venue id for the given type
venueid = VenueClasses.find( :first, :conditions => [type =
#get the venue with all the places in a collection
@venue = VenuesClasses.find :first, :conditions => ["venue_classes.id =
? AND places.name LIKE",venueid,placename], :include => :places

then you should be able to read all atrributes of venue, and all
matching places through @venue.places

Note: i'm wondering if one could also directly put the search for the
type in the second find, without first finding the ID, like this:

@venue = VenuesClasses.find :first, :conditions => ["venue_classes.type
= ? AND places.name LIKE",params[:type],placename], :include => :places

though i'm not so sure about it because of the special habtm stuff with
the join table
oh and yeah, my code could very possibly contain typos or other errors,
maybe it points in the right direction at least.

Sean Colquhoun wrote:

In this:
venueid = VenueClasses.find( :first, :conditions => [type =

What does "type = ?,params[:type]" do?

That's a typo for this:

  [ " type => ? ", params[:type] ]

The ? just means to substitute in the next thing in the array.

(And _nobody_ here should be writing a Rails app without /Agile Web Development with Rails/ by the Daves. Don't let the "Agile" term spook you; they really mean "the easy way" there.)

This also works:

  [ " type => :type ", params ]

Because then ActiveRecord treats the next item in the array as a Hash, and keys it with :type.

Also, the use of :include - from the API i got the impression that you
needed to use :joins first. So i guess I don't understand it yet.

If you mean a method takes two symbols, like this:

foo( :include => 42, :joins => 'bar' )

The method foo() might not use those arguments in that order. It might fetch the :joins key first.

Actually, this is my first time making a join in Rails. Is this the
right way to do it?

No, you should use the has_many directives, so they will take care of the verbose details for you.