## controller

class RolesController < ApplicationController
before_filter :login_required

def index
@roles = Role.find(:all)

respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @roles }
end
end

def new
@role = Role.new

respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @role }
end
end

def create
@role = Role.new(params[:role])
if @role.save
redirect_to roles_url
flash[:notice] = "Successfully created role."
else
render :action => 'new'
end
end

def destroy
@role = Role.find(params[:id])
@role.destroy

respond_to do |format|
format.html { redirect_to(roles_url) }
format.xml { head :ok }
end
end

end

## index view
<h2>Roles</h2>

<%= link_to 'Create new', new_role_path %><br />

<ul>
<% for role in @roles %>
<li><%= link_to role.name, role %> <%= link_to '(remove)', role, :confirm => 'Are you sure?', :method => :delete %></li>
<% end %>
</ul>

## new view
<h1>New role</h1>

<% form_for(@role) do |f| -%>
<%= f.error_messages %>

<p><%= f.label :name %><br/>
<%= f.text_field :name %></p>

<p><%= submit_tag 'Add role' %></p>

<% end %>

<%= link_to 'Back', roles_path %>