class UsersController < ApplicationController # GET /users # GET /users.xml def index @users = User.find(:all) respond_to do |format| format.html # index.html.erb format.xml { render :xml => @users } end end # GET /users/1 # GET /users/1.xml def show @user = User.find(params[:id]) respond_to do |format| format.html # show.html.erb format.xml { render :xml => @user } end end # GET /users/new # GET /users/new.xml def new @user = User.new respond_to do |format| format.html # new.html.erb format.xml { render :xml => @user } end end # GET /users/1/edit def edit @user = User.find(params[:id]) end # POST /users # POST /users.xml def create @user = User.new(params[:user]) respond_to do |format| if @user.save flash[:notice] = 'User was successfully created.' format.html { redirect_to( :controller => :welcome ) } format.xml { render :xml => @user, :status => :created, :location => @user } else flash[:warning] = 'Signup failed' format.html { render :action => "new" } format.xml { render :xml => @user.errors, :status => :unprocessable_entity } end end end # PUT /users/1 # PUT /users/1.xml def update @user = User.find(params[:id]) respond_to do |format| if @user.update_attributes(params[:user]) flash[:notice] = 'User was successfully updated.' format.html { redirect_to(@user) } format.xml { head :ok } else format.html { render :action => "edit" } format.xml { render :xml => @user.errors, :status => :unprocessable_entity } end end end # DELETE /users/1 # DELETE /users/1.xml def destroy @user = User.find(params[:id]) @user.destroy respond_to do |format| format.html { redirect_to(users_url) } format.xml { head :ok } end end end

New user

<%= error_messages_for :user %> <% if false then %>

Signups are closed, sorry pal!

<% else %>

Signup!

<% form_for :user do |form| %> <% form.fieldset 'Account information' do %> <%= form.text_field :name %> <%= form.text_field :email %> <%= form.password_field :password %> <%= form.password_field :password_confirmation %> <% end %> <%= form.submit "Submit" %> <% end %> <% end %> <%= link_to 'Back', users_path %> module ApplicationHelper class LabelledFormBuilder < ActionView::Helpers::FormBuilder include ActionView::Helpers::TextHelper include ActionView::Helpers::TagHelper include ActionView::Helpers::FormTagHelper field_helpers << "select" (field_helpers - %w(hidden_field check_box)).each do |selector| src = <<-END_SRC def #{selector}(field, *args, &proc) if field.nil? super(*args) else args << { } if '#{selector}' == 'select' if self.object and (self.object.class.accessible_attributes.nil? or not self.object.class.accessible_attributes.include?(field.to_sym)) and not self.object[field].nil? then args << { :disabled => true, :class => '#{selector} disabled' } else args << { :class => '#{selector}' } end "

" + super(field, *args) + "

" end end END_SRC class_eval src, __FILE__, __LINE__ end def check_box(*args, &proc) if args.length > 1 and args.first.is_a? String desc = args.shift end field = args.shift args << { :class => 'check_box' } if self.object and not self.object.class.accessible_attributes.include?( field.to_sym) and not self.object[field].nil? then args.last[:class] += ' disabled' args.last[:disabled] = true end desc ||= field.to_s.humanize "

" + super(field, *args) + "

" end def submit(value) submit_tag value, { :class => 'submit' } end def fieldset(legend, &proc) concat "
#{legend}", proc.binding yield concat "
", proc.binding end end end