Rails questions

Spent some time this weekend working on a Rails application. It's great
stuff, coming from a php/mysql "hack it together" background. But I have a
couple questions...

1)
I have a controller called "houses". In that, there's an action called
"modify". modify's view (modify.rhtml) has a form with an action
"save_house". When the user hits submit, modify gets called with id
save_house (i.e. /houses/modify/save_house). What I want to have happen is
the action "save_house" called. I have another action "new", and new.rhtml
has a form with action "create_house", and when the user hits submit, the
action "create_house" is called, which is what I want to have happen. I'm
not sure why that's not the case with modify.

2)
has_and_belongs_to_many question: I have a model "House" that
has_and_belongs_to_many "Amenity". Is there a "Best Way(tm)" to display
this relationship in the controller/view? The way it works currently:

houses_controller#new:
    @amenities=Amenities.find_all

new.rhtml:
    (loops through @amenities, spits out checkboxes.)

house_controller#create:
    @house = House.new(@params["house"].save
    @house.amenities.clear
    @params["amenities"].each do |amenity|
        # @params["amenities"] is an array of amenity id's that the user
selected
        temp_amenity = Amenities.new
        temp_amenity.id = amenity
        @house.amenities << amenity
    end

This seems pretty clumsy to me.

Thanks for any input!

Joe

1)
I have a controller called "houses". In that, there's an action called
"modify". modify's view (modify.rhtml) has a form with an action
"save_house". When the user hits submit, modify gets called with id
save_house (i.e. /houses/modify/save_house). What I want to have happen is
the action "save_house" called. I have another action "new", and new.rhtml
has a form with action "create_house", and when the user hits submit, the
action "create_house" is called, which is what I want to have happen. I'm
not sure why that's not the case with modify.

It sounds like you're using scaffolding, which had a problem regarding this in Rails 0.8.5. You can fix it manually by doing something like:

<%= form("house", :action => url_for(:action => "save_house")) %>

...if my guess at what your problem is have any grounding in reality. This problem is fixed in the very forthcoming (and massive) Rails 0.9 upgrade.

2)
has_and_belongs_to_many question: I have a model "House" that
has_and_belongs_to_many "Amenity". Is there a "Best Way(tm)" to display
this relationship in the controller/view? The way it works currently:

house_controller#create:

@house = House.new(@params["house"].save
@house.amenities << Amenities.find(@params["amenities"])

Amenities.find accepts and array and will return a such. @house.amenities.<< does the same and creates a link between the house and amenity for each of the records found.

For followup questions, please consider signing up for the mailing list[1] or get on IRC[2] for real-time help.

Thanks for enjoying Rails!

[1] http://lists.rubyonrails.org/mailman/listinfo/rails
[2] Ruby on Rails — A web-app framework that includes everything needed to create database-backed web applications according to the Model-View-Controller (MVC) pattern.

···

--
David Heinemeier Hansson,
http://www.basecamphq.com/ -- Web-based Project Management
http://www.rubyonrails.org/ -- Web-application framework for Ruby
http://macromates.com/ -- TextMate: Code and markup editor (OS X)
http://www.loudthinking.com/ -- Broadcasting Brain