[Rails] Re: Multiple Select example?
brez! !!
jbresnik at gmail.com
Thu Apr 27 07:32:47 GMT 2006
Found it! FYI if it comes up again:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Michael Koziarski wrote:
| Nice, are there any functions like this for handling one to many
| relations? i.e a User has_and_belongs_to_many :groups.
collection_select requires a source object and an instance method. With
has_many, this method can be the foreign key. But with
has_and_belongs_to_many there is no corresponding instance method since
the keys are in a separate join table, so you'll want to manage the
parameters yourself. Here's an example using
options_from_collection_for_select to create a multiple select:
class User < ActiveRecord::Base
~ # id, name fields
~ has_and_belongs_to_many :groups
end
class Group < ActiveRecord::Base
~ # id, name fields
~ has_and_belongs_to_many :users
end
class UserController < AbstractApplicationController
~ model :user
~ def edit
~ case @request.method
~ when :get
~ @user = User.find(@params['id'])
~ @available_groups = Groups.find_all - @user.groups
~ when :post
~ @user = User.find(@params['user']['id'])
~ @user.groups << Group.find(@params['add_groups'])
~ redirect_to :action => 'show', :id => @user.id
~ end
~ end
end
views/user/edit.rhtml
<%= form_tag :action => 'edit' %>
~ <%= hidden_field 'user', 'id' %>
~ <select name="add_groups[]" multiple="multiple">
~ <%= options_from_collection_for_select @available_groups, 'id',
'name' %>
~ </select>
</form>
Check out the relevant FormOptionsHelper documentation:
http://ap.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#M000075
Best,
jeremy
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.6 (Darwin)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org
iD8DBQFBpBYeAQHALep9HFYRAk8qAKCbRIzv2GBiWGSfIsmlx1ZZYuodqQCePlV2
9tqGiLfiZTyocwJ1U9xMTmY=
=vrPm
-----END PGP SIGNATURE-----
--
Posted via http://www.ruby-forum.com/.
More information about the Rails
mailing list