I started out with a normal scaffold for the USERS table. I changed
the index view to be list.html.erb but the url: ''/users/list''
returns
an ''unknown action'' error. ''/users/list/:id''
also returns an ''unknown
action'' error. I''ve also merged both the edit and new views
into the
manage.html.erb which duplicates the list view except with a form on
the right side. the url ''/users/manage'' returns an
''unknown action''
error but ''/users/manage/:id'' brings me to the manage page
with the
edit form.
in my routes.rb, it reads:
map.resources :users
The update an delete actions work but they don''t route me to the right
url. the new action does not work. can anyone help? I''ve pasted my
controller and views below.
USERS CONTOLLER
class UsersController < ApplicationController
layout ''staff''
def index
list
render :action => ''list''
end
# GET /users
# GET /users.xml
def list
@users = User.find(:all)
# respond_to do |format|
# format.html # index.html.erb
# format.xml { render :xml => @users }
# end
end
# GET /users/new
# GET /users/new.xml
def manage
list
@user = User.find(params[:id]) if params[:id]
@user = User.new if @user.nil?
# respond_to do |format|
# format.html # new.html.erb
# format.xml { render :xml => @user }
# end
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(users_url) }
format.xml { render :xml => @user, :status
=> :created, :location => @user }
else
format.html { render(:action => "manage") }
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(users_url) }
format.xml { head :ok }
else
format.html { render(:action => ''manage'') }
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|
flash[:notice] = ''User was successfully deleted.''
format.html { redirect_to(:action => ''list'') }
format.xml { head :ok }
end
end
end
LIST VIEW
<% @page_title = ''Current Users'' -%>
<%= content_tag(''p'', link_to(''« Back to
Menu'', :controller =>
''staff'', :action => ''menu'')) %>
<div class=''userlist_left''>
<%= render(:partial => ''listing'') -%>
</div>
<div class= ''userlist_right''>
Please select a user on the left or create a new user.
<%= link_to(''New user'', :action =>
''manage'') -%>
</div>
MANAGE VIEW
<% @page_title = ''Current Users'' -%>
<%= content_tag(''p'', link_to(''« Back to
Menu'', :controller =>
''staff'', :action => ''menu'')) %>
<div class=''userlist_left''>
<%= render(:partial => ''listing'') -%>
</div>
<div class= ''userlist_right''>
<% if params[:id].blank? %>
<h2>New user</h2>
<% form_for(@user) do |f| -%>
<%= render(:partial => ''form'') -%>
<p class= ''user_submit''><%= submit_tag
"Create" -%></p>
<% end -%>
<% else -%>
<h2>Editing user</h2>
<% form_for(@user) do |f| -%>
<%= render(:partial => ''form'')%>
<p class= ''user_submit''><%= submit_tag
"Update" -%></p>
<% end -%>
<p class= ''user_submit''><%=
link_to(''Delete User'', { :action =>
''destroy'',
:id => @user }, :confirm => ''Are you sure you want to
permanently
delete this user?'',
:method => :delete) -%>
<% end -%>
<%= link_to(''Cancel'', :action =>
''list'') %></p>
</div>
_LISTING PARTIAL
<div class=''userlist_listing''>
<table>
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Username</th>
<th>User Level</th>
</tr>
<% for user in @users -%>
<tr class=''<%= cycle(''row1'',
''row2'')%>''>
<td><%= h(user.first_name) -%></td>
<td><%= h(user.last_name) -%></td>
<td><%= h(user.username) -%></td>
<td><%= h(user.user_level) -%></td>
<td><%= link_to(''Edit'', :action =>
''manage'', :id => user) -%></
td>
</tr>
<% end %>
</table>
</div><br/>
_FORM PARTIAL
<%= error_messages_for(:user) -%>
<table>
<tr>
<th>Username</td>
<td><%= text_field(:user, :username) -%></td>
</tr>
<tr>
<th>Hashed Password</th>
<td><%= text_field(:user, :hashed_password) -%></td>
</tr>
<tr>
<th>First Name</th>
<td><%= text_field(:user, :first_name) -%></td>
</tr>
<tr>
<th>Last Name</th>
<td><%= text_field(:user, :last_name) -%></td>
</tr>
<tr>
<th>Email</th>
<td><%= text_field(:user, :email) -%></td>
</tr>
<tr>
<th>Display Name</th>
<td><%= text_field(:user, :display_name) -%></td>
</tr>
<tr>
<th>User Level</th>
<td><%= select(:user, :user_level, [0,1,2,3,4,9]) -%></td>
</tr>
</table>
--~--~---------~--~----~------------~-------~--~----~
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
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
Check the output of "rake routes" to see which routes are recognized. When you are sure your URLs follow the expected URLs, check that your actions correspond. Keep an eye on the log file to see what''s going on. Christian On Sep 13, 10:16 pm, chris <chris.ye...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> I started out with a normal scaffold for the USERS table. I changed > the index view to be list.html.erb but the url: ''/users/list'' returns > an ''unknown action'' error. ''/users/list/:id'' also returns an ''unknown > action'' error. I''ve also merged both the edit and new views into the > manage.html.erb which duplicates the list view except with a form on > the right side. the url ''/users/manage'' returns an ''unknown action'' > error but ''/users/manage/:id'' brings me to the manage page with the > edit form. > > in my routes.rb, it reads: > map.resources :users > > The update an delete actions work but they don''t route me to the right > url. the new action does not work. can anyone help? I''ve pasted my > controller and views below. > > USERS CONTOLLER > class UsersController < ApplicationController > > layout ''staff'' > > def index > list > render :action => ''list'' > end > > # GET /users > # GET /users.xml > def list > @users = User.find(:all) > > # respond_to do |format| > # format.html # index.html.erb > # format.xml { render :xml => @users } > # end > end > > # GET /users/new > # GET /users/new.xml > def manage > list > @user = User.find(params[:id]) if params[:id] > @user = User.new if @user.nil? > > # respond_to do |format| > # format.html # new.html.erb > # format.xml { render :xml => @user } > # end > 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(users_url) } > format.xml { render :xml => @user, :status > => :created, :location => @user } > else > format.html { render(:action => "manage") } > 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(users_url) } > format.xml { head :ok } > else > format.html { render(:action => ''manage'') } > 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| > flash[:notice] = ''User was successfully deleted.'' > format.html { redirect_to(:action => ''list'') } > format.xml { head :ok } > end > end > > end > > LIST VIEW > <% @page_title = ''Current Users'' -%> > > <%= content_tag(''p'', link_to(''« Back to Menu'', :controller => > ''staff'', :action => ''menu'')) %> > > <div class=''userlist_left''> > <%= render(:partial => ''listing'') -%> > </div> > <div class= ''userlist_right''> > Please select a user on the left or create a new user. > <%= link_to(''New user'', :action => ''manage'') -%> > </div> > > MANAGE VIEW > <% @page_title = ''Current Users'' -%> > > <%= content_tag(''p'', link_to(''« Back to Menu'', :controller => > ''staff'', :action => ''menu'')) %> > > <div class=''userlist_left''> > <%= render(:partial => ''listing'') -%> > </div> > <div class= ''userlist_right''> > <% if params[:id].blank? %> > <h2>New user</h2> > > <% form_for(@user) do |f| -%> > <%= render(:partial => ''form'') -%> > <p class= ''user_submit''><%= submit_tag "Create" -%></p> > <% end -%> > <% else -%> > <h2>Editing user</h2> > > <% form_for(@user) do |f| -%> > <%= render(:partial => ''form'')%> > <p class= ''user_submit''><%= submit_tag "Update" -%></p> > <% end -%> > > <p class= ''user_submit''><%= link_to(''Delete User'', { :action => > ''destroy'', > :id => @user }, :confirm => ''Are you sure you want to permanently > delete this user?'', > :method => :delete) -%> > > <% end -%> > > <%= link_to(''Cancel'', :action => ''list'') %></p> > > </div> > > _LISTING PARTIAL > <div class=''userlist_listing''> > <table> > <tr> > <th>First Name</th> > <th>Last Name</th> > <th>Username</th> > <th>User Level</th> > </tr> > <% for user in @users -%> > <tr class=''<%= cycle(''row1'', ''row2'')%>''> > <td><%= h(user.first_name) -%></td> > <td><%= h(user.last_name) -%></td> > <td><%= h(user.username) -%></td> > <td><%= h(user.user_level) -%></td> > <td><%= link_to(''Edit'', :action => ''manage'', :id => user) -%></ > td> > </tr> > <% end %> > </table> > </div><br/> > > _FORM PARTIAL > <%= error_messages_for(:user) -%> > > <table> > <tr> > <th>Username</td> > <td><%= text_field(:user, :username) -%></td> > </tr> > <tr> > <th>Hashed Password</th> > <td><%= text_field(:user, :hashed_password) -%></td> > </tr> > <tr> > <th>First Name</th> > <td><%= text_field(:user, :first_name) -%></td> > </tr> > <tr> > <th>Last Name</th> > <td><%= text_field(:user, :last_name) -%></td> > </tr> > <tr> > <th>Email</th> > <td><%= text_field(:user, :email) -%></td> > </tr> > > <tr> > <th>Display Name</th> > <td><%= text_field(:user, :display_name) -%></td> > </tr> > > <tr> > <th>User Level</th> > <td><%= select(:user, :user_level, [0,1,2,3,4,9]) -%></td> > </tr> > </table>--~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Please read http://frozenplague.net/2008/01/06/restful-routing-an-overview/ to gain a better understanding of restful routing. I also don''t recommend merging the new action with the edit action because you may run into problems later on ----- Ryan Bigg Freelancer Skype: radarlistener MSN & Gtalk: radarlistener-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org On 14/09/2008, at 5:46 AM, chris wrote:> > I started out with a normal scaffold for the USERS table. I changed > the index view to be list.html.erb but the url: ''/users/list'' returns > an ''unknown action'' error. ''/users/list/:id'' also returns an ''unknown > action'' error. I''ve also merged both the edit and new views into the > manage.html.erb which duplicates the list view except with a form on > the right side. the url ''/users/manage'' returns an ''unknown action'' > error but ''/users/manage/:id'' brings me to the manage page with the > edit form. > > in my routes.rb, it reads: > map.resources :users > > The update an delete actions work but they don''t route me to the right > url. the new action does not work. can anyone help? I''ve pasted my > controller and views below. > > USERS CONTOLLER > class UsersController < ApplicationController > > layout ''staff'' > > def index > list > render :action => ''list'' > end > > # GET /users > # GET /users.xml > def list > @users = User.find(:all) > > # respond_to do |format| > # format.html # index.html.erb > # format.xml { render :xml => @users } > # end > end > > # GET /users/new > # GET /users/new.xml > def manage > list > @user = User.find(params[:id]) if params[:id] > @user = User.new if @user.nil? > > # respond_to do |format| > # format.html # new.html.erb > # format.xml { render :xml => @user } > # end > 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(users_url) } > format.xml { render :xml => @user, :status > => :created, :location => @user } > else > format.html { render(:action => "manage") } > 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(users_url) } > format.xml { head :ok } > else > format.html { render(:action => ''manage'') } > 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| > flash[:notice] = ''User was successfully deleted.'' > format.html { redirect_to(:action => ''list'') } > format.xml { head :ok } > end > end > > end > > > LIST VIEW > <% @page_title = ''Current Users'' -%> > > <%= content_tag(''p'', link_to(''« Back to Menu'', :controller => > ''staff'', :action => ''menu'')) %> > > <div class=''userlist_left''> > <%= render(:partial => ''listing'') -%> > </div> > <div class= ''userlist_right''> > Please select a user on the left or create a new user. > <%= link_to(''New user'', :action => ''manage'') -%> > </div> > > > MANAGE VIEW > <% @page_title = ''Current Users'' -%> > > <%= content_tag(''p'', link_to(''« Back to Menu'', :controller => > ''staff'', :action => ''menu'')) %> > > <div class=''userlist_left''> > <%= render(:partial => ''listing'') -%> > </div> > <div class= ''userlist_right''> > <% if params[:id].blank? %> > <h2>New user</h2> > > <% form_for(@user) do |f| -%> > <%= render(:partial => ''form'') -%> > <p class= ''user_submit''><%= submit_tag "Create" -%></p> > <% end -%> > <% else -%> > <h2>Editing user</h2> > > <% form_for(@user) do |f| -%> > <%= render(:partial => ''form'')%> > <p class= ''user_submit''><%= submit_tag "Update" -%></p> > <% end -%> > > <p class= ''user_submit''><%= link_to(''Delete User'', { :action => > ''destroy'', > :id => @user }, :confirm => ''Are you sure you want to permanently > delete this user?'', > :method => :delete) -%> > > <% end -%> > > <%= link_to(''Cancel'', :action => ''list'') %></p> > > </div> > > > _LISTING PARTIAL > <div class=''userlist_listing''> > <table> > <tr> > <th>First Name</th> > <th>Last Name</th> > <th>Username</th> > <th>User Level</th> > </tr> > <% for user in @users -%> > <tr class=''<%= cycle(''row1'', ''row2'')%>''> > <td><%= h(user.first_name) -%></td> > <td><%= h(user.last_name) -%></td> > <td><%= h(user.username) -%></td> > <td><%= h(user.user_level) -%></td> > <td><%= link_to(''Edit'', :action => ''manage'', :id => user) -%></ > td> > </tr> > <% end %> > </table> > </div><br/> > > > _FORM PARTIAL > <%= error_messages_for(:user) -%> > > <table> > <tr> > <th>Username</td> > <td><%= text_field(:user, :username) -%></td> > </tr> > <tr> > <th>Hashed Password</th> > <td><%= text_field(:user, :hashed_password) -%></td> > </tr> > <tr> > <th>First Name</th> > <td><%= text_field(:user, :first_name) -%></td> > </tr> > <tr> > <th>Last Name</th> > <td><%= text_field(:user, :last_name) -%></td> > </tr> > <tr> > <th>Email</th> > <td><%= text_field(:user, :email) -%></td> > </tr> > > <tr> > <th>Display Name</th> > <td><%= text_field(:user, :display_name) -%></td> > </tr> > > <tr> > <th>User Level</th> > <td><%= select(:user, :user_level, [0,1,2,3,4,9]) -%></td> > </tr> > </table> > >--~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
rename the action in your controller On Sep 13, 4:16 pm, chris <chris.ye...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> I started out with a normal scaffold for the USERS table. I changed > the index view to be list.html.erb but the url: ''/users/list'' returns > an ''unknown action'' error. ''/users/list/:id'' also returns an ''unknown > action'' error. I''ve also merged both the edit and new views into the > manage.html.erb which duplicates the list view except with a form on > the right side. the url ''/users/manage'' returns an ''unknown action'' > error but ''/users/manage/:id'' brings me to the manage page with the > edit form. > > in my routes.rb, it reads: > map.resources :users > > The update an delete actions work but they don''t route me to the right > url. the new action does not work. can anyone help? I''ve pasted my > controller and views below. > > USERS CONTOLLER > class UsersController < ApplicationController > > layout ''staff'' > > def index > list > render :action => ''list'' > end > > # GET /users > # GET /users.xml > def list > @users = User.find(:all) > > # respond_to do |format| > # format.html # index.html.erb > # format.xml { render :xml => @users } > # end > end > > # GET /users/new > # GET /users/new.xml > def manage > list > @user = User.find(params[:id]) if params[:id] > @user = User.new if @user.nil? > > # respond_to do |format| > # format.html # new.html.erb > # format.xml { render :xml => @user } > # end > 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(users_url) } > format.xml { render :xml => @user, :status > => :created, :location => @user } > else > format.html { render(:action => "manage") } > 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(users_url) } > format.xml { head :ok } > else > format.html { render(:action => ''manage'') } > 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| > flash[:notice] = ''User was successfully deleted.'' > format.html { redirect_to(:action => ''list'') } > format.xml { head :ok } > end > end > > end > > LIST VIEW > <% @page_title = ''Current Users'' -%> > > <%= content_tag(''p'', link_to(''« Back to Menu'', :controller => > ''staff'', :action => ''menu'')) %> > > <div class=''userlist_left''> > <%= render(:partial => ''listing'') -%> > </div> > <div class= ''userlist_right''> > Please select a user on the left or create a new user. > <%= link_to(''New user'', :action => ''manage'') -%> > </div> > > MANAGE VIEW > <% @page_title = ''Current Users'' -%> > > <%= content_tag(''p'', link_to(''« Back to Menu'', :controller => > ''staff'', :action => ''menu'')) %> > > <div class=''userlist_left''> > <%= render(:partial => ''listing'') -%> > </div> > <div class= ''userlist_right''> > <% if params[:id].blank? %> > <h2>New user</h2> > > <% form_for(@user) do |f| -%> > <%= render(:partial => ''form'') -%> > <p class= ''user_submit''><%= submit_tag "Create" -%></p> > <% end -%> > <% else -%> > <h2>Editing user</h2> > > <% form_for(@user) do |f| -%> > <%= render(:partial => ''form'')%> > <p class= ''user_submit''><%= submit_tag "Update" -%></p> > <% end -%> > > <p class= ''user_submit''><%= link_to(''Delete User'', { :action => > ''destroy'', > :id => @user }, :confirm => ''Are you sure you want to permanently > delete this user?'', > :method => :delete) -%> > > <% end -%> > > <%= link_to(''Cancel'', :action => ''list'') %></p> > > </div> > > _LISTING PARTIAL > <div class=''userlist_listing''> > <table> > <tr> > <th>First Name</th> > <th>Last Name</th> > <th>Username</th> > <th>User Level</th> > </tr> > <% for user in @users -%> > <tr class=''<%= cycle(''row1'', ''row2'')%>''> > <td><%= h(user.first_name) -%></td> > <td><%= h(user.last_name) -%></td> > <td><%= h(user.username) -%></td> > <td><%= h(user.user_level) -%></td> > <td><%= link_to(''Edit'', :action => ''manage'', :id => user) -%></ > td> > </tr> > <% end %> > </table> > </div><br/> > > _FORM PARTIAL > <%= error_messages_for(:user) -%> > > <table> > <tr> > <th>Username</td> > <td><%= text_field(:user, :username) -%></td> > </tr> > <tr> > <th>Hashed Password</th> > <td><%= text_field(:user, :hashed_password) -%></td> > </tr> > <tr> > <th>First Name</th> > <td><%= text_field(:user, :first_name) -%></td> > </tr> > <tr> > <th>Last Name</th> > <td><%= text_field(:user, :last_name) -%></td> > </tr> > <tr> > <th>Email</th> > <td><%= text_field(:user, :email) -%></td> > </tr> > > <tr> > <th>Display Name</th> > <td><%= text_field(:user, :display_name) -%></td> > </tr> > > <tr> > <th>User Level</th> > <td><%= select(:user, :user_level, [0,1,2,3,4,9]) -%></td> > </tr> > </table>--~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
chris wrote:> I started out with a normal scaffold for the USERS table. I changed > the index view to be list.html.erb but the url: ''/users/list'' returns > an ''unknown action'' error. ''/users/list/:id'' also returns an ''unknown > action'' error. I''ve also merged both the edit and new views into the > manage.html.erb which duplicates the list view except with a form on > the right side. the url ''/users/manage'' returns an ''unknown action'' > error but ''/users/manage/:id'' brings me to the manage page with the > edit form.Simply adding the method in the controller doesn''t give you the route, nor does changing the name of the method in the controller. The reason ''/users/manage/:id'' works is because it gets scooped up by your default route ''/:controller/:action/:id''. Take a look at the :member and :collection options to map.resources. Then can be used as such: # to add a method to an object of class User # this will give you /users/:id/change_name map.resources :users, :member => {:change_name => [:get, :post]} # to add a method to the class itself # this will give you /users/active map.resources :users, :collection => {:active => :get} You may also be interested in the :path_names option, to change the names of the typical routes. # to change "edit" to "manage" map.resources :users, :path_names => { :new => ''manage'' } I''m not sure what would happen if you mapped two methods to the same name: # may or may not work as you''d expect map.resources :users, :path_names => { :new => ''manage'', :edit => ''manage'' } Reference: http://api.rubyonrails.org/classes/ActionController/Resources.html Hope that helps. Cheers, Darrik --~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Thanks for the replies guys, especially you Darrik. I actually did have a look at the options to map.resources but was a little overwhelmed. The tutorial I''ve been trying to complete merges the NEW and EDIT actions to show how its possible to put all those actions into a single method but in doing so, it just royally screws with the default routes. I''m going to play around with the options as you suggest and I''ll let you know how I do in the next few days. thanks. On Sep 13, 9:43 pm, Darrik Mazey <darrikma...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> chris wrote: > > I started out with a normal scaffold for the USERS table. I changed > > the index view to be list.html.erb but the url: ''/users/list'' returns > > an ''unknown action'' error. ''/users/list/:id'' also returns an ''unknown > > action'' error. I''ve also merged both the edit and new views into the > > manage.html.erb which duplicates the list view except with a form on > > the right side. the url ''/users/manage'' returns an ''unknown action'' > > error but ''/users/manage/:id'' brings me to the manage page with the > > edit form. > > Simply adding the method in the controller doesn''t give you the route, > nor does changing the name of the method in the controller. The reason > ''/users/manage/:id'' works is because it gets scooped up by your default > route ''/:controller/:action/:id''. > > Take a look at the :member and :collection options to map.resources. > Then can be used as such: > > # to add a method to an object of class User > # this will give you /users/:id/change_name > map.resources :users, :member => {:change_name => [:get, :post]} > > # to add a method to the class itself > # this will give you /users/active > map.resources :users, :collection => {:active => :get} > > You may also be interested in the :path_names option, to change the > names of the typical routes. > > # to change "edit" to "manage" > map.resources :users, :path_names => { :new => ''manage'' } > > I''m not sure what would happen if you mapped two methods to the same name: > > # may or may not work as you''d expect > map.resources :users, :path_names => { :new => ''manage'', :edit => > ''manage'' } > > Reference:http://api.rubyonrails.org/classes/ActionController/Resources.html > > Hope that helps. > > Cheers, > Darrik--~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
We''ll i''ve read into RESTful routes and your other suggestions
yet
still can''t seem to fix the problem. here''s the output from
RAKE
ROUTES:
users GET /users {:controller=>"users",
:action=>"index"}
formatted_users GET /users.:format
{:controller=>"users", :action=>"index"}
POST /users {:controller=>"users", :action=>"create"}
POST /users.:format {:controller=>"users",
:action=>"create"}
new_user GET /users/manage {:controller=>"users",
:action=>"new"}
formatted_new_user GET /users/manage.:format
{:controller=>"users", :action=>"new"}
edit_user GET /users/:id/manage
{:controller=>"users", :action=>"edit"}
formatted_edit_user GET /users/:id/manage.:format
{:controller=>"users", :action=>"edit"}
user GET /users/:id {:controller=>"users",
:action=>"show"}
formatted_user GET /users/:id.:format
{:controller=>"users", :action=>"show"}
PUT /users/:id {:controller=>"users",
:action=>"update"}
PUT /users/:id.:format {:controller=>"users",
:action=>"update"}
DELETE /users/:id {:controller=>"users",
:action=>"destroy"}
DELETE /users/:id.:format {:controller=>"users",
:action=>"destroy"}
categories GET /categories
{:controller=>"categories", :action=>"index"}
formatted_categories GET /categories.:format
{:controller=>"categories", :action=>"index"}
POST /categories {:controller=>"categories",
:action=>"create"}
POST /categories.:format
{:controller=>"categories", :action=>"create"}
new_category GET /categories/new
{:controller=>"categories", :action=>"new"}
formatted_new_category GET /categories/new.:format
{:controller=>"categories", :action=>"new"}
edit_category GET /categories/:id/edit
{:controller=>"categories", :action=>"edit"}
formatted_edit_category GET /categories/:id/edit.:format
{:controller=>"categories", :action=>"edit"}
category GET /categories/:id
{:controller=>"categories", :action=>"show"}
formatted_category GET /categories/:id.:format
{:controller=>"categories", :action=>"show"}
PUT /categories/:id {:controller=>"categories",
:action=>"update"}
PUT /categories/:id.:format
{:controller=>"categories", :action=>"update"}
DELETE /categories/:id
{:controller=>"categories", :action=>"destroy"}
DELETE /categories/:id.:format
{:controller=>"categories", :action=>"destroy"}
posts GET /posts {:controller=>"posts",
:action=>"index"}
formatted_posts GET /posts.:format
{:controller=>"posts", :action=>"index"}
POST /posts {:controller=>"posts", :action=>"create"}
POST /posts.:format {:controller=>"posts",
:action=>"create"}
new_post GET /posts/new {:controller=>"posts",
:action=>"new"}
formatted_new_post GET /posts/new.:format
{:controller=>"posts", :action=>"new"}
edit_post GET /posts/:id/edit {:controller=>"posts",
:action=>"edit"}
formatted_edit_post GET /posts/:id/edit.:format
{:controller=>"posts", :action=>"edit"}
post GET /posts/:id {:controller=>"posts",
:action=>"show"}
formatted_post GET /posts/:id.:format
{:controller=>"posts", :action=>"show"}
PUT /posts/:id {:controller=>"posts",
:action=>"update"}
PUT /posts/:id.:format {:controller=>"posts",
:action=>"update"}
DELETE /posts/:id {:controller=>"posts",
:action=>"destroy"}
DELETE /posts/:id.:format {:controller=>"posts",
:action=>"destroy"}
/:controller/:action/:id.:format
/:controller/:action/:id
Sorry that its difficult to read, google''s text editor doesn''t
really
offer much. I also tried adding the following into my ROUTES.RB:
map.resources :users, :path_names => { :new => ''manage'',
:edit =>
''manage'' }, :collection => {:list => :get, :manage
=>
[:post, :put, :delete]}
This adding the following 4 lines to my RAKE ROUTES:
manage_users POSTPUTDELETE /users/manage
{:controller=>"users", :action=>"manage"}
formatted_manage_users POSTPUTDELETE /users/manage.:format
{:controller=>"users", :action=>"manage"}
list_users GET /users/list
{:controller=>"users", :action=>"list"}
formatted_list_users GET /users/list.:format
{:controller=>"users", :action=>"list"}
It looks right to me but when i redirect to the url =>
''users/list'' or
''users/manage'', it sends ''list'' or
''manage'' as the :id and it gives me
an unknown action error. This means my new, create, update, destroy
methods all don''t work.
please look at the first post for my CONTROLLER and VIEW code.
On Sep 14, 2:06 am, chris
<chris.ye...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
wrote:> Thanks for the replies guys, especially you Darrik. I actually did
> have a look at the options to map.resources but was a little
> overwhelmed. The tutorial I''ve been trying to complete merges the
NEW
> and EDIT actions to show how its possible to put all those actions
> into a single method but in doing so, it just royally screws with the
> default routes. I''m going to play around with the options as you
> suggest and I''ll let you know how I do in the next few days.
thanks.
>
> On Sep 13, 9:43 pm, Darrik Mazey
<darrikma...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
>
> >chriswrote:
> > > I started out with a normal scaffold for the USERS table. I
changed
> > > the index view to be list.html.erb but the url:
''/users/list'' returns
> > > an ''unknown action'' error.
''/users/list/:id'' also returns an ''unknown
> > > action'' error. I''ve also merged both the edit
and new views into the
> > > manage.html.erb which duplicates the list view except with a form
on
> > > the right side. the url ''/users/manage'' returns
an ''unknown action''
> > > error but ''/users/manage/:id'' brings me to the
manage page with the
> > > edit form.
>
> > Simply adding the method in the controller doesn''t give you
the route,
> > nor does changing the name of the method in the controller. The
reason
> > ''/users/manage/:id'' works is because it gets scooped
up by your default
> > route ''/:controller/:action/:id''.
>
> > Take a look at the :member and :collection options to map.resources.
> > Then can be used as such:
>
> > # to add a method to an object of class User
> > # this will give you /users/:id/change_name
> > map.resources :users, :member => {:change_name => [:get, :post]}
>
> > # to add a method to the class itself
> > # this will give you /users/active
> > map.resources :users, :collection => {:active => :get}
>
> > You may also be interested in the :path_names option, to change the
> > names of the typical routes.
>
> > # to change "edit" to "manage"
> > map.resources :users, :path_names => { :new =>
''manage'' }
>
> > I''m not sure what would happen if you mapped two methods to
the same name:
>
> > # may or may not work as you''d expect
> > map.resources :users, :path_names => { :new =>
''manage'', :edit =>
> > ''manage'' }
>
> >
Reference:http://api.rubyonrails.org/classes/ActionController/Resources.html
>
> > Hope that helps.
>
> > Cheers,
> > Darrik
--~--~---------~--~----~------------~-------~--~----~
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
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
We''ll i''ve read into RESTful routes and your other suggestions
yet
still can''t seem to fix the problem. here''s the output from
RAKE
ROUTES:
users GET /users {:controller=>"users",
:action=>"index"}
formatted_users GET /users.:format
{:controller=>"users", :action=>"index"}
POST /users {:controller=>"users", :action=>"create"}
POST /users.:format {:controller=>"users",
:action=>"create"}
new_user GET /users/manage {:controller=>"users",
:action=>"new"}
formatted_new_user GET /users/manage.:format
{:controller=>"users", :action=>"new"}
edit_user GET /users/:id/manage
{:controller=>"users", :action=>"edit"}
formatted_edit_user GET /users/:id/manage.:format
{:controller=>"users", :action=>"edit"}
user GET /users/:id {:controller=>"users",
:action=>"show"}
formatted_user GET /users/:id.:format
{:controller=>"users", :action=>"show"}
PUT /users/:id {:controller=>"users",
:action=>"update"}
PUT /users/:id.:format {:controller=>"users",
:action=>"update"}
DELETE /users/:id {:controller=>"users",
:action=>"destroy"}
DELETE /users/:id.:format {:controller=>"users",
:action=>"destroy"}
categories GET /categories
{:controller=>"categories", :action=>"index"}
formatted_categories GET /categories.:format
{:controller=>"categories", :action=>"index"}
POST /categories {:controller=>"categories",
:action=>"create"}
POST /categories.:format
{:controller=>"categories", :action=>"create"}
new_category GET /categories/new
{:controller=>"categories", :action=>"new"}
formatted_new_category GET /categories/new.:format
{:controller=>"categories", :action=>"new"}
edit_category GET /categories/:id/edit
{:controller=>"categories", :action=>"edit"}
formatted_edit_category GET /categories/:id/edit.:format
{:controller=>"categories", :action=>"edit"}
category GET /categories/:id
{:controller=>"categories", :action=>"show"}
formatted_category GET /categories/:id.:format
{:controller=>"categories", :action=>"show"}
PUT /categories/:id {:controller=>"categories",
:action=>"update"}
PUT /categories/:id.:format
{:controller=>"categories", :action=>"update"}
DELETE /categories/:id
{:controller=>"categories", :action=>"destroy"}
DELETE /categories/:id.:format
{:controller=>"categories", :action=>"destroy"}
posts GET /posts {:controller=>"posts",
:action=>"index"}
formatted_posts GET /posts.:format
{:controller=>"posts", :action=>"index"}
POST /posts {:controller=>"posts", :action=>"create"}
POST /posts.:format {:controller=>"posts",
:action=>"create"}
new_post GET /posts/new {:controller=>"posts",
:action=>"new"}
formatted_new_post GET /posts/new.:format
{:controller=>"posts", :action=>"new"}
edit_post GET /posts/:id/edit {:controller=>"posts",
:action=>"edit"}
formatted_edit_post GET /posts/:id/edit.:format
{:controller=>"posts", :action=>"edit"}
post GET /posts/:id {:controller=>"posts",
:action=>"show"}
formatted_post GET /posts/:id.:format
{:controller=>"posts", :action=>"show"}
PUT /posts/:id {:controller=>"posts",
:action=>"update"}
PUT /posts/:id.:format {:controller=>"posts",
:action=>"update"}
DELETE /posts/:id {:controller=>"posts",
:action=>"destroy"}
DELETE /posts/:id.:format {:controller=>"posts",
:action=>"destroy"}
/:controller/:action/:id.:format
/:controller/:action/:id
Sorry that its difficult to read, google''s text editor doesn''t
really
offer much. I also tried adding the following into my ROUTES.RB after
|map.resources :users| which was already in there:
:path_names => { :new => ''manage'', :edit =>
''manage'' }, :collection
=> {:list => :get, :manage => [:post, :put, :delete]}
This adding the following 4 lines to my RAKE ROUTES:
manage_users POSTPUTDELETE /users/manage
{:controller=>"users", :action=>"manage"}
formatted_manage_users POSTPUTDELETE /users/manage.:format
{:controller=>"users", :action=>"manage"}
list_users GET /users/list
{:controller=>"users", :action=>"list"}
formatted_list_users GET /users/list.:format
{:controller=>"users", :action=>"list"}
It looks right to me but when i redirect to the url =>
''users/list'' or
''users/manage'', it sends ''list'' or
''manage'' as the :id and it gives me
an unknown action error. This means my new, create, update, destroy
methods all don''t work.
please look at the first post for my CONTROLLER and VIEW code.
On Sep 14, 2:06 am, chris
<chris.ye...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
wrote:> Thanks for the replies guys, especially you Darrik. I actually did
> have a look at the options to map.resources but was a little
> overwhelmed. The tutorial I''ve been trying to complete merges the
NEW
> and EDIT actions to show how its possible to put all those actions
> into a single method but in doing so, it just royally screws with the
> default routes. I''m going to play around with the options as you
> suggest and I''ll let you know how I do in the next few days.
thanks.
>
> On Sep 13, 9:43 pm, Darrik Mazey
<darrikma...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
>
> >chriswrote:
> > > I started out with a normal scaffold for the USERS table. I
changed
> > > the index view to be list.html.erb but the url:
''/users/list'' returns
> > > an ''unknown action'' error.
''/users/list/:id'' also returns an ''unknown
> > > action'' error. I''ve also merged both the edit
and new views into the
> > > manage.html.erb which duplicates the list view except with a form
on
> > > the right side. the url ''/users/manage'' returns
an ''unknown action''
> > > error but ''/users/manage/:id'' brings me to the
manage page with the
> > > edit form.
>
> > Simply adding the method in the controller doesn''t give you
the route,
> > nor does changing the name of the method in the controller. The
reason
> > ''/users/manage/:id'' works is because it gets scooped
up by your default
> > route ''/:controller/:action/:id''.
>
> > Take a look at the :member and :collection options to map.resources.
> > Then can be used as such:
>
> > # to add a method to an object of class User
> > # this will give you /users/:id/change_name
> > map.resources :users, :member => {:change_name => [:get, :post]}
>
> > # to add a method to the class itself
> > # this will give you /users/active
> > map.resources :users, :collection => {:active => :get}
>
> > You may also be interested in the :path_names option, to change the
> > names of the typical routes.
>
> > # to change "edit" to "manage"
> > map.resources :users, :path_names => { :new =>
''manage'' }
>
> > I''m not sure what would happen if you mapped two methods to
the same name:
>
> > # may or may not work as you''d expect
> > map.resources :users, :path_names => { :new =>
''manage'', :edit =>
> > ''manage'' }
>
> >
Reference:http://api.rubyonrails.org/classes/ActionController/Resources.html
>
> > Hope that helps.
>
> > Cheers,
> > Darrik
--~--~---------~--~----~------------~-------~--~----~
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
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
chris wrote:> We''ll i''ve read into RESTful routes and your other suggestions yet > still can''t seem to fix the problem. here''s the output from RAKE > ROUTES: > > users GET /users {:controller=>"users", :action=>"index"} > formatted_users GET /users.:format > {:controller=>"users", :action=>"index"} > POST /users {:controller=>"users", :action=>"create"} > POST /users.:format {:controller=>"users", :action=>"create"} > new_user GET /users/manage {:controller=>"users", :action=>"new"} > formatted_new_user GET /users/manage.:format > {:controller=>"users", :action=>"new"} > edit_user GET /users/:id/manage > {:controller=>"users", :action=>"edit"} > formatted_edit_user GET /users/:id/manage.:format > {:controller=>"users", :action=>"edit"} > user GET /users/:id {:controller=>"users", :action=>"show"} > formatted_user GET /users/:id.:format > {:controller=>"users", :action=>"show"} > PUT /users/:id {:controller=>"users", :action=>"update"} > PUT /users/:id.:format {:controller=>"users", :action=>"update"} > DELETE /users/:id {:controller=>"users", :action=>"destroy"} > DELETE /users/:id.:format {:controller=>"users", :action=>"destroy"} > categories GET /categories > {:controller=>"categories", :action=>"index"} > formatted_categories GET /categories.:format > {:controller=>"categories", :action=>"index"} > POST /categories {:controller=>"categories", :action=>"create"} > POST /categories.:format > {:controller=>"categories", :action=>"create"} > new_category GET /categories/new > {:controller=>"categories", :action=>"new"} > formatted_new_category GET /categories/new.:format > {:controller=>"categories", :action=>"new"} > edit_category GET /categories/:id/edit > {:controller=>"categories", :action=>"edit"} > formatted_edit_category GET /categories/:id/edit.:format > {:controller=>"categories", :action=>"edit"} > category GET /categories/:id > {:controller=>"categories", :action=>"show"} > formatted_category GET /categories/:id.:format > {:controller=>"categories", :action=>"show"} > PUT /categories/:id {:controller=>"categories", :action=>"update"} > PUT /categories/:id.:format > {:controller=>"categories", :action=>"update"} > DELETE /categories/:id > {:controller=>"categories", :action=>"destroy"} > DELETE /categories/:id.:format > {:controller=>"categories", :action=>"destroy"} > posts GET /posts {:controller=>"posts", :action=>"index"} > formatted_posts GET /posts.:format > {:controller=>"posts", :action=>"index"} > POST /posts {:controller=>"posts", :action=>"create"} > POST /posts.:format {:controller=>"posts", :action=>"create"} > new_post GET /posts/new {:controller=>"posts", :action=>"new"} > formatted_new_post GET /posts/new.:format > {:controller=>"posts", :action=>"new"} > edit_post GET /posts/:id/edit {:controller=>"posts", :action=>"edit"} > formatted_edit_post GET /posts/:id/edit.:format > {:controller=>"posts", :action=>"edit"} > post GET /posts/:id {:controller=>"posts", :action=>"show"} > formatted_post GET /posts/:id.:format > {:controller=>"posts", :action=>"show"} > PUT /posts/:id {:controller=>"posts", :action=>"update"} > PUT /posts/:id.:format {:controller=>"posts", :action=>"update"} > DELETE /posts/:id {:controller=>"posts", :action=>"destroy"} > DELETE /posts/:id.:format {:controller=>"posts", :action=>"destroy"} > /:controller/:action/:id.:format > /:controller/:action/:id > > Sorry that its difficult to read, google''s text editor doesn''t really > offer much. I also tried adding the following into my ROUTES.RB after > |map.resources :users| which was already in there: > > :path_names => { :new => ''manage'', :edit => ''manage'' }, :collection > => {:list => :get, :manage => [:post, :put, :delete]} > > This adding the following 4 lines to my RAKE ROUTES: > > manage_users POSTPUTDELETE /users/manage > {:controller=>"users", :action=>"manage"} > formatted_manage_users POSTPUTDELETE /users/manage.:format > {:controller=>"users", :action=>"manage"} > list_users GET /users/list > {:controller=>"users", :action=>"list"} > formatted_list_users GET /users/list.:format > {:controller=>"users", :action=>"list"} > > It looks right to me but when i redirect to the url => ''users/list'' or > ''users/manage'', it sends ''list'' or ''manage'' as the :id and it gives me > an unknown action error. This means my new, create, update, destroy > methods all don''t work. > > please look at the first post for my CONTROLLER and VIEW code. > > On Sep 14, 2:06 am, chris <chris.ye...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: >> Thanks for the replies guys, especially you Darrik. I actually did >> have a look at the options to map.resources but was a little >> overwhelmed. The tutorial I''ve been trying to complete merges the NEW >> and EDIT actions to show how its possible to put all those actions >> into a single method but in doing so, it just royally screws with the >> default routes. I''m going to play around with the options as you >> suggest and I''ll let you know how I do in the next few days. thanks. >> >> On Sep 13, 9:43 pm, Darrik Mazey <darrikma...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: >> >>> chriswrote: >>>> I started out with a normal scaffold for the USERS table. I changed >>>> the index view to be list.html.erb but the url: ''/users/list'' returns >>>> an ''unknown action'' error. ''/users/list/:id'' also returns an ''unknown >>>> action'' error. I''ve also merged both the edit and new views into the >>>> manage.html.erb which duplicates the list view except with a form on >>>> the right side. the url ''/users/manage'' returns an ''unknown action'' >>>> error but ''/users/manage/:id'' brings me to the manage page with the >>>> edit form. >>> Simply adding the method in the controller doesn''t give you the route, >>> nor does changing the name of the method in the controller. The reason >>> ''/users/manage/:id'' works is because it gets scooped up by your default >>> route ''/:controller/:action/:id''. >>> Take a look at the :member and :collection options to map.resources. >>> Then can be used as such: >>> # to add a method to an object of class User >>> # this will give you /users/:id/change_name >>> map.resources :users, :member => {:change_name => [:get, :post]} >>> # to add a method to the class itself >>> # this will give you /users/active >>> map.resources :users, :collection => {:active => :get} >>> You may also be interested in the :path_names option, to change the >>> names of the typical routes. >>> # to change "edit" to "manage" >>> map.resources :users, :path_names => { :new => ''manage'' } >>> I''m not sure what would happen if you mapped two methods to the same name: >>> # may or may not work as you''d expect >>> map.resources :users, :path_names => { :new => ''manage'', :edit => >>> ''manage'' } >>> Reference:http://api.rubyonrails.org/classes/ActionController/Resources.html >>> Hope that helps. >>> Cheers, >>> Darrik > > >Your controller doesn''t have a method called ''list'' or ''manage''. Also of note, if you expect the manage method to manipulate an individual object of the User class, you should add it as :member, not :collection. Collection (as the name implies) defines actions that operate on the entire collection (list, index, etc), whereas member defines actions that operate on a single member (also as the name implies). The key distinction is that the :collection option to mapping a User resource will give you a route like /users/:action, whereas the :member option will give you a route like /users/:id/:action, in both cases where :action is whatever you specify. Hope that helps. Darrik -- Darrik Mazey Developer DMT Programming, LLC. P.O. Box 91 Torrington, CT 06790 office: 330.983.9941 fax: 330.983.9942 mobile: 330.808.2025 darrik-hYmAEBE3lWIoJ/VrfD3uVNBPR1lH4CV8@public.gmane.org To obtain my public key, send an email to darrik-3ZOItiUs85ODFug2jf9dzoDEJ8dgO5X3FNOCUTQkUI4@public.gmane.org --~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
I actually do have a method called ''list'' and
''manage'' in my
controller so i''m not sure why you say I don''t.
I''ve actually updated my Users Controller since the first post. it now
looks like this (I''ve CAPITALIZED the LIST and MANAGE methods:
class UsersController < ApplicationController
layout ''staff''
def index
list
render :action => ''list''
end
# GET /users
# GET /users.xml
def LIST
@users = User.find(:all)
# respond_to do |format|
# format.html # index.html.erb
# format.xml { render :xml => @users }
# end
end
# GET /users/new
# GET /users/new.xml
def MANAGE
list
if request.get? && params[:id].blank? #new
@user = User.new
elsif request.post? && params[:id].blank? #create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
flash[:notice] = ''The user was successfully
created.''
format.html { redirect_to(:action => ''list'') }
format.xml { render :xml => @user, :status
=> :created, :location => @user }
else
format.html { render(:action => "manage") }
format.xml { render :xml => @user.errors, :status
=> :unprocessable_entity }
end
end
elsif request.get? && !params[:id].blank? #edit
@user = User.find(params[:id])
else request.post? && !params[:id].blank? #update or delete
@user = User.find(params[:id])
if params[:commit] == ''Update''
respond_to do |format|
if @user.update_attributes(params[:user])
flash[:notice] = ''The user was successfully
updated.''
format.html { redirect_to(:action => ''list'') }
format.xml { head :ok }
else
format.html { render(:action => ''manage'') }
format.xml { render :xml => @user.errors, :status
=> :unprocessable_entity }
end
end
else #action should delete
@user = User.find(params[:id])
@user.destroy
respond_to do |format|
flash[:notice] = ''The user was successfully
deleted.''
format.html { redirect_to(:action => ''list'') }
format.xml { head :ok }
end
end
end
end
end
I''ve made some very slight changes to my view to deal with the fact
that I no longer have a ''create'' ''update'' or
''destroy'' method
anymore. As you can see, I''ve rolled all those methods into a single
method, ''manage''.
LIST VIEW
<% @page_title = ''Current Users'' -%>
<%= content_tag(''p'', link_to(''« Back to
Menu'', :controller =>
''staff'', :action => ''menu'')) %>
<div class=''userlist_left''>
<%= render(:partial => ''listing'') -%>
</div>
<div class= ''userlist_right''>
Please select a user on the left or create a new user.
<%= link_to(''New user'', :action =>
''manage'') -%>
</div>
MANAGE VIEW
<% @page_title = ''Current Users'' -%>
<%= content_tag(''p'', link_to(''« Back to
Menu'', :controller =>
''staff'', :action => ''menu'')) %>
<div class=''userlist_left''>
<%= render(:partial => ''listing'') -%>
</div>
<div class= ''userlist_right''>
<% if params[:id].blank? %>
<h2>New user</h2>
<%# form_tag(:action => ''manage'') do -%>
<% form_for(@user) do -%>
<%= render(:partial => ''form'') -%>
<p class= ''user_submit''><%= submit_tag
"Create" -%></p>
<% end -%>
<% else -%>
<h2>Editing user</h2>
<%# form_tag(:action => ''manage'', :id => @user) do
-%>
<% form_for(@user) do -%>
<%= render(:partial => ''form'')%>
<p class= ''user_submit''><%= submit_tag
"Update" -%></p>
<% end -%>
<p class= ''user_submit''><%=
link_to(''Delete User'', { :action =>
''destroy'',
:id => @user }, :confirm => ''Are you sure you want to
permanently
delete this user?'',
:method => :delete) -%>
<% end -%>
<%= link_to(''Cancel'', :action =>
''list'') %></p>
</div>
_LISTING PARTIAL
<div class=''userlist_listing''>
<table>
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Username</th>
<th>User Level</th>
</tr>
<% for user in @users -%>
<tr class=''<%= cycle(''row1'',
''row2'')%>''>
<td><%= h(user.first_name) -%></td>
<td><%= h(user.last_name) -%></td>
<td><%= h(user.username) -%></td>
<td><%= h(user.user_level) -%></td>
<td><%= link_to(''Edit'', :action =>
''manage'', :id => user) -%></
td>
</tr>
<% end %>
</table>
</div><br/>
_FORM PARTIAL
<%= error_messages_for(:user) -%>
<table>
<tr>
<th>Username</td>
<td><%= text_field(:user, :username) -%></td>
</tr>
<tr>
<th>Hashed Password</th>
<td><%= text_field(:user, :hashed_password) -%></td>
</tr>
<tr>
<th>First Name</th>
<td><%= text_field(:user, :first_name) -%></td>
</tr>
<tr>
<th>Last Name</th>
<td><%= text_field(:user, :last_name) -%></td>
</tr>
<tr>
<th>Email</th>
<td><%= text_field(:user, :email) -%></td>
</tr>
<tr>
<th>Display Name</th>
<td><%= text_field(:user, :display_name) -%></td>
</tr>
<tr>
<th>User Level</th>
<td><%= select(:user, :user_level, (0..9).to_a.reverse)
-%></td>
</tr>
</table>
I also tried to configure my ROUTES.RB as you''ve suggested, using
the :member option instead of the :collection for the ''manage''
action
as such:
ActionController::Routing::Routes.draw do |map|
map.resources :users, :path_names => { :new =>
''manage'', :edit =>
''manage'' },
:collection => {:list => :get}, :member => {:manage =>
[:post, :put, :delete]}
map.resources :categories
map.resources :posts
map.connect '':controller/:action/:id.:format''
map.connect '':controller/:action/:id''
end
Now, when I goto the url: ''/users/manage'' (the url for
creating a new
user object) and ''/users/:id/manage'' (the url for editing an
existing
user object) it still gives me the unknown action error. Instead of
sending ''manage'' as the :id (which is what it did before I
added
the :path_names, :collection, :member options in my routes.rb code),
it sends ''new'' and ''edit'' as the :action
where instead it should be
sending ''manage'' as the action or so I think.
Thanks again.
--~--~---------~--~----~------------~-------~--~----~
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
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---