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('&laquo; 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
-~----------~----~----~----~------~----~------~--~---

Reply via email to