What does your routes.rb look like? Does it have
map.resources :categories in it?
For the create/update form try:
<% form_for @category do |c| %>
<%= error_messages_for 'category' -%>
<table>
<tr>
<th>Name</th>
etc...
</tr>
<tr>
<td><%= c.text_field :name %></td>
etc...
<td><%= submit_tag 'save' %></
td>
</tr>
</table>
<% end %>
On Sep 8, 6:26 pm, chris <[EMAIL PROTECTED]> wrote:
> i'm having a routing problem with my UPDATE action. I've pasted my
> CATEGORIES controller and view below. I ran scaffold for categories
> and i consolidated everything into a single view so that I could show
> list, create new, edit, destroy all from a single page. my create,
> destroy actions work and my index view works as expected. my UPDATE
> action however returns the following:
>
> Processing CategoriesController#16 (for 127.0.0.1 at 2008-09-08
> 13:08:22) [POST]
> Session ID: c05797629988686fd3951de29fca7e24
> Parameters: {"commit"=>"Update",
> "category"=>{"name"=>"Entertainment", "description"=>"Latest gossip
> about your favourite stars12", "short_name"=>"entertainment"},
> "authenticity_token"=>"b6a61d7dc0890d83a923366cd5c93e672b16f62e",
> "action"=>"16", "controller"=>"categories"}
>
> and it identifies the object id as my action and redirects me to /
> categories/:id. it should redirect me to simply /categories with a
> flash notice saying my object has been updated. i should also note
> that it also doesn't save the updated entry to my database.
>
> I'm running rails 2.1 and I haven't changed my default routes in
> routes.rb
>
> Thanks for your help.
>
> HERE'S MY CONTROLLER
> class CategoriesController < ApplicationController
>
> layout 'staff'
>
> #verify :method => :post, :only => [ :destroy, :create, :update ],
> #:redirect_to => { :action => :list }
>
> # GET /categories
> # GET /categories.xml
> def index
> list
> render :action => 'list'
> end
>
> def list
> @categories = Category.find(:all)
> @category = Category.find(params[:id]) if params[:id]
> @category = Category.new if @category.nil?
>
> #respond_to do |format|
> #format.html # index.html.erb
> #format.xml { render :xml => @categories }
> #end
> end
>
> # POST /categories
> # POST /categories.xml
> def create
> @category = Category.new(params[:category])
>
> respond_to do |format|
> if @category.save
> flash[:notice] = 'Category was successfully created.'
> format.html { redirect_to categories_url }
> format.xml { render :xml => @category, :status
> => :created, :location => @category }
> else
> format.html { render categories_url }
> format.xml { render :xml => @category.errors, :status
> => :unprocessable_entity }
> end
> end
> end
>
> # PUT /categories/1
> # PUT /categories/1.xml
> def update
> @category = Category.find(params[:id])
>
> respond_to do |format|
> if @category.update_attributes(params[:category])
> flash[:notice] = 'Category was successfully updated.'
> format.html { redirect_to categories_url }
> format.xml { render :xml => @category, :status
> => :created, :location => @category }
> else
> format.html { render categories_url }
> format.xml { render :xml => @category.errors, :status
> => :unprocessable_entity }
> end
> end
> end
>
> # DELETE /categories/1
> # DELETE /categories/1.xml
> def destroy
> @category = Category.find(params[:id])
> @category.destroy
>
> respond_to do |format|
> flash[:notice] = 'Category was successfully removed.'
> format.html { redirect_to categories_url }
> format.xml { head :ok }
> end
> end
>
> end
>
> HERE'S MY VIEW --> categories/list.html.erb
> <% @page_title = 'Categories' -%>
>
> <%= content_tag('p', link_to('« Back to Menu', :controller =>
> 'staff', :action => 'menu')) %>
>
> <table>
> <tr>
> <th>Name</th>
> <th>Short Name</th>
> <th>Description</th>
> </tr>
>
> <% for category in @categories -%>
> <tr class='<%= cycle('row1', 'row2')%>'>
> <td><%= h(category.name) -%></td>
> <td><%= h(category.short_name) -%></td>
> <td><%= h(category.description) -%></td>
> <td><%= link_to('Edit', :action => 'list', :id => category) -%></
> td>
> <td><%= link_to('Delete', {:action => 'destroy', :id => category},
> :confirm => 'Are you sure you want to remove this category?', :method
> => :delete) -%></td>
> </tr>
> <% end %>
> </table>
>
> <p><%= link_to('New Category', categories_url) %></p>
>
> <% form_tag(params[:id].blank? ? {:action => 'create'} : {:action =>
> 'update', :id => @category}) do -%>
> <%= error_messages_for 'category' -%>
>
> <table>
> <tr>
> <th>Name</th>
> <th>Short Name</th>
> <th>Description</th>
> </tr>
> <tr>
> <td><%= text_field(:category, :name, :size => 20)
> -%></td>
> <td><%= text_field(:category, :short_name, :size =>
> 20) -%></td>
> <td><%= text_field(:category, :description, :size =>
> 40) -%></td>
> <td><%= submit_tag(params[:id].blank? ? 'Create' :
> 'Update') -%></
> td>
> </tr>
> </table>
> <% end %>
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---