## 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 %>