Wolas!, Thanks for the reply. I will be able to try this out in the morning. I'll get back to you with the results.
Elliott On Mar 17, 5:58 am, "\"Wolas!\"" <[email protected]> wrote: > If i understood correctly, you want the role to be added to the user > upon creation, but its not. > > here is the code that would do it > > def create > logout_keeping_session! > params[:user][:login] = params[:user][:first_name] + params[:user] > [:last_name] > > # Create a random password. > params[:user][:password] = User.generate_pass 8 > > @user = User.new(params[:user], :roles => [ Role.new(params > [:role]) ] # in an array > > # success = @user && @user.save # user will always have > something, therefore this line is redundant > > if @user.save > redirect_back_or_default('/') > flash[:notice] = "Thanks for signing up!" > else > flash[:error] = "Too bad sucka!" > render :action => 'new' > end > end > > hope it helps > > On Mar 16, 11:09 pm,elliottg<[email protected]> wrote: > > > Hello. > > > Stuck on some HABTM stuff here... I'm new to rails and I'm kinda lost > > on this topic. > > FYI This is all within the context of a working restful_authentication > > and role_requirement setup. I am simply adding a radio button pair to > > my new user form. When submitted, I need the appropriate tables > > updated. As is, only the user table will update. The join table will > > not. I have tried a handful of different things both for the > > fields_for params and inside the controller's create action with no > > luck yet. Here's what I have below. > > > Thanks for the input! > > > THE CLASSES: > > class User < ActiveRecord::Base > > has_and_belongs_to_many :roles > > end > > > class Role < ActiveRecord::Base > > has_and_belongs_to_many :users > > end > > > THE CONTROLLER: Edited for brevity... > > class UsersController < ApplicationController > > def new > > @user = User.new > > end > > > def create > > logout_keeping_session! > > username = params[:user][:first_name] > > username += params[:user][:last_name] > > params[:user][:login] = username > > > # Create a random password. > > random_p = User.generate_pass 8 > > params[:user][:password] = random_p > > > @user = User.new(params[:user]) > > > success = @user && @user.save > > if success && @user.errors.empty? > > redirect_back_or_default('/') > > flash[:notice] = "Thanks for signing up!" > > else > > flash[:error] = "Too bad sucka!" > > render :action => 'new' > > end > > end > > end > > > THE FORM: new.html.erb > > <% form_for @user do |f| -%> > > > <p><%= label_tag 'first_name' %><br/> > > <%= f.text_field :first_name %></p> > > > <p><%= label_tag 'last_name' %><br/> > > <%= f.text_field :last_name %></p> > > > <p><%= label_tag 'email' %><br/> > > <%= f.text_field :email %></p> > > > <% fields_for :role, @roles do |ff| %> > > <p>Select account type:<br> > > <%= label_tag :name_user, "User" %> > > <%= ff.radio_button :name, "user" %> > > > <%= label_tag :name_admin, "Admin" %> > > <%= ff.radio_button :name, "admin" %> > > </p> > > <% end %> > > > <p><%= submit_tag 'Sign up' %></p> > > <% end -%> > > > Here's a sample of how the params are going out: > > Processing UsersController#create (for 127.0.0.1 at 2009-03-16 > > 17:59:38) [POST] > > Parameters: {"user"=>{"first_name"=>"Willy", "last_name"=>"Wonka", > > "email"=>"[email protected]"}, "commit"=>"Sign up", > > "authenticity_token"=>"05d982e6eabe5eba6dac466723f9402b9522b3b1", > > "role"=>{"name"=>"admin"}} > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---

