Hi Raul,


I did as you suggested without editing the routes.rb file and I still
managed to come up the ' Unknown action No action
responded to destroy'

<%= link_to  'Destroy', {:action => 'destroy', id =>
@album.id},

                                      :confirm => 'Are you
sure?',

                                      :method => :delete %>

However I did managed to find another comment with the same type of
issue, which was
<%= link_to 'Destroy', movie, :confirm => 'Are you sure?', :method
=> :delete %>  which was from 
http://fairleads.blogspot.com/2008/01/this-is-second-part-of-my-series.html.


With this information I replace the following

# replace the line
<%= link_to  'Destroy', {:action => 'destroy', id =>
@album.id},

                                      :confirm => 'Are you
sure?',

                                      :method => :delete %>

# with

<%= link_to 'Destroy', @album, :confirm => 'Are you sure?', :method
=> :delete %>

And I added in the following into my routes.rb file


ActionController::Routing::Routes.draw do |map|
  map.resources :albums
  map.connect '/public/destroy/:id', :controller => 'public', :action
=> 'destroy'    ~#  New line added



  # The priority is based upon order of creation: first created ->
highest priority.

  # Sample of regular route:
  #   map.connect 'products/:id', :controller => 'catalog', :action =>
'view'
  # Keep in mind you can assign values other than :controller
and :action

  # Sample of named route:
  #   map.purchase 'products/:id/purchase', :controller =>
'catalog', :action => 'purchase'
  # This route can be invoked with purchase_url(:id => product.id)

  # Sample resource route (maps HTTP verbs to controller actions
automatically):
  #   map.resources :products

  # Sample resource route with options:
  #   map.resources :products, :member => { :short => :get, :toggle
=> :post }, :collection => { :sold => :get }

  # Sample resource route with sub-resources:
  #   map.resources :products, :has_many =>
[ :comments, :sales ], :has_one => :seller

  # Sample resource route with more complex sub-resources
  #   map.resources :products do |products|
  #     products.resources :comments
  #     products.resources :sales, :collection => { :recent => :get }
  #   end

  # Sample resource route within a namespace:
  #   map.namespace :admin do |admin|
  #     # Directs /admin/products/* to Admin::ProductsController (app/
controllers/admin/products_controller.rb)
  #     admin.resources :products
  #   end

  # You can have the root of your site routed with map.root -- just
remember to delete public/index.html.
   map.root :controller => "albums"

  # See how all your routes lay out with "rake routes"

  # Install the default routes as the lowest priority.
  map.connect ':controller/:action/:id'
  map.connect ':controller/:action/:id.:format'
end


However it seems to be working but when I do confirm to delete it
redirects me to another action by default being  :controller =>
"albums" and this is set in my routes.rb file like so

 # You can have the root of your site routed with map.root -- just
remember to delete public/index.html.
   map.root :controller => "albums"


How can I amend this so it can redirect it to my action I want it to
go to?

I have copied in my Controller

class PublicController < ApplicationController

  def album_list
    @albums = Album.find_by_sql('SELECT * FROM albums
    WHERE release_date <= \'2006-11-10\'AND artist LIKE \'%Tupac%\'
    ORDER BY release_date ASC ;')
  end

  def alt_album_list
    release_date = '2006-11-10'
    artist = ''
    @albums = Album.find(:all,
   :conditions => ["release_date <= ? AND artist LIKE ?",release_date,
'%' + artist +'%'],
   :order => 'title ASC',
   :limit => 25)
    render(:action => 'album_list')

  end

    def show_album
    release_date = '2006-11-10'
    artist = 'Tupac'
    @album = Album.find(:first,
   :conditions => ["release_date <= ? AND artist LIKE ?",release_date,
'%' + artist +'%'],
   :order => 'title ASC')

end

    def list
      @albums = Album.find(:all)
      render(:action => 'album_list')
     end


    def show
     @album = Album.find(params['id'])
     render(:action => 'show_album')
    end


    def new
      @album = Album.new
    end

    def create
      @album = Album.new(params[:album])
      if @album.save
       redirect_to(:action =>'list')
       else
      render(:action => 'new')
    end
 end

    def edit
      @album = Album.find(params[:id])
     end

    def update
      @album = Album.find(params[:id])
      if @album.update_attributes(params[:album])
       redirect_to(:action =>'list')
       else
      render(:action => 'new')
    end


      def destroy
        @album = Album.find(params['id'])
        @album.destroy
        redirect_to(:action =>'list')
      end



   end
end


Do you have any ideas on why this is?

Thanks

Keith



On Oct 19, 10:20 pm, "raul parolari" <[EMAIL PROTECTED]> wrote:
> Hi, Keith
>
>    you missed my second email (sent immediately after ther first) where I
> warned about the parenthesys that needed to be moved. Or, better, remove the
> parenthesys, and just write:
>
> <%= link_to  'Destroy', {:action => 'destroy', id => @album.id},
>
>                                       :confirm => 'Are you
> sure?',
>                                       :method => :delete %>
>
> This SHOULD work, without changing anything in the routes.rb file. However,
> allow me to point this important point:
>
> a) you have the routes.rb configured for REST, but you are not using the
> Rest style Urls.
>
> b) You could delete the line map.resources :albums, if for some reason you
> do not want the RESTful Urls, as at a certain moment there will be
> confusion; or perhaps invert the order of the rules in routes.rb, as
> suggested by the forum post (although I would delete, for more clarity).
>
> On the other hand,  if you wanted to to begin use the Rest routes (standard
> in Rails since 2007), you would just need to do:
>
> # replace the lines for delete with:
> <%= link_to "Destroy",    project_path(@album),
>                       *:*confirm => 'Are you sure?', :method => :delete %>
>
> # replace the line
> <%= link_to('Edit', :action => 'edit', :id => @album.id ) %>
> # with:
> <%= link_to "Edit",   edit_album_path(@album) %>
>
> But if you are inserting custom actions (like 'alt_album_list') you may want
> to postpone moving to Rest for the moment. I just showed the above to let
> you know.
>
> > ..."Ruby For Rails" by David A Black which is really helpful. I would also
>
> like recommend "Agile Web Development..."
>
> Yes, David Black book is great for Ruby; the AWDWR is great for Rails.
>
> One note: my updated advice for a person seriously interested in Ruby would
> be:
>
> a) first, David Black's book mentioned above, as introduction to Ruby
>
> b) then,  "The Ruby Programming Language", by David Flanagan (with
> contributions from Matz). Not only it shows 1.8, but also 1.9 (in a very
> natural way, without confusion). An extraordinary book.
>
> Raul
>
>
>
> On Sun, Oct 19, 2008 at 1:17 PM, <[EMAIL PROTECTED]> wrote:
>
> > Hi Raul,
>
> > Thanks very much for getting back to me. I took your previously advise
> > on the book that you recommended "Ruby For Rails" by David A Black
> > which is really helpful. I would also like recommend "Aglie Web
> > Development with Rails"  by Dave Thomas this book is also great if you
> > are new to rails.
>
> > Well Raul I tried the following in my view,
>
> >      <% if @album != nil -%>
> >         ID:     <%= @album.id %><br/>
> >         Title:  <%= @album.title %> <br/>
> >         Artist: <%= @album.artist %><br/>
> >         Genre:  <%= @album.genre  %><br/>
> >      <%  else -%>
> >         No record found.
>
> >      <% end -%>
> >      <%= link_to('Back', :action => 'alt_album_list') %> |
> >      <%= link_to('Edit', :action => 'edit', :id => @album.id ) %> |
> >      <%= link_to('Destroy', {:action => 'destroy', :id =>
> > @album.id},
>
> >                                      :confirm => 'Are you sure?',
> >                                     :method => :delete)%>
>
> > and I thought would also try
>
> > <%= link_to('Destroy', {:action => 'destroy', id => @album.id},  ***I
> > also changed the id to a symbol being :id***
> >                                     :confirm => 'Are you sure?'),
> >                                     :method => :delete %>    Rails
> > didn't seem to like the parenthesis around :confirm => 'Are you
> > sure?'#
>
> > I have also copied in my routes.rb file
>
> > ActionController::Routing::Routes.draw do |map|
> >  map.resources :albums
>
> >  # The priority is based upon order of creation: first created ->
> > highest priority.
>
> >  # Sample of regular route:
> >  #   map.connect 'products/:id', :controller => 'catalog', :action =>
> > 'view'
> >  # Keep in mind you can assign values other than :controller
> > and :action
>
> >  # Sample of named route:
> >  #   map.purchase 'products/:id/purchase', :controller =>
> > 'catalog', :action => 'purchase'
> >  # This route can be invoked with purchase_url(:id => product.id)
>
> >  # Sample resource route (maps HTTP verbs to controller actions
> > automatically):
> >  #   map.resources :products
>
> >  # Sample resource route with options:
> >  #   map.resources :products, :member => { :short => :get, :toggle
> > => :post }, :collection => { :sold => :get }
>
> >  # Sample resource route with sub-resources:
> >  #   map.resources :products, :has_many =>
> > [ :comments, :sales ], :has_one => :seller
>
> >  # Sample resource route with more complex sub-resources
> >  #   map.resources :products do |products|
> >  #     products.resources :comments
> >  #     products.resources :sales, :collection => { :recent => :get }
> >  #   end
>
> >  # Sample resource route within a namespace:
> >  #   map.namespace :admin do |admin|
> >  #     # Directs /admin/products/* to Admin::ProductsController (app/
> > controllers/admin/products_controller.rb)
> >  #     admin.resources :products
> >  #   end
>
> >  # You can have the root of your site routed with map.root -- just
> > remember to delete public/index.html.
> >   map.root :controller => "albums"
>
> >  # See how all your routes lay out with "rake routes"
>
> >  # Install the default routes as the lowest priority.
> >  map.connect ':controller/:action/:id'
> >  map.connect ':controller/:action/:id.:format'
> > end
>
> > Does the error I'm receiving have anything to do with map.connect
> > ':controller/:action/:id' being as lowest priority?
>
> > Thanks
>
> > Keith
>
> > On Oct 19, 8:21 pm, "raul parolari" <[EMAIL PROTECTED]> wrote:
> > > Keith,
>
> > >   the closing parenthesis (that I had not noticed) has of course to be
> > moved
> > > at the end of the statement, so the line becomes:
>
> > > <%= link_to('Destroy', {:action => 'destroy', id => @album.id},
> > >                                      :confirm => 'Are you sure?',
> > >                                      :method => :delete) %>
>
> > > I would leave out the parenthesis, which are not needed here, and only
> > add
> > > noise
>
> > > Raul
>
> > > On Sun, Oct 19, 2008 at 12:00 PM, raul parolari <[EMAIL PROTECTED]
> > >wrote:
>
> > > > Keith
>
> > > > The problem may be that you are using a GET Http verb to 'destroy' a
> > > > resource (and Rails is not happy about it):
>
> > > > Try this: change the line:
>
> > > > <%= link_to('Destroy', {:action => 'destroy', id => @album.id},
> > > >                                      :confirm => 'Are you sure?') %>
> > > > into
>
> > > > <%= link_to('Destroy', {:action => 'destroy', id => @album.id},
> > > >                                      :confirm => 'Are you sure?'),
> > > >                                      :method => :delete %>
>
> > > > See if this solve the problem; else, you should show your routes.rb
> > file.
>
> > > > Raul
>
> > > > On Sun, Oct 19, 2008 at 11:20 AM, <[EMAIL PROTECTED]> wrote:
>
> > > >> Hi Everyone,
>
> > > >> I have just created a destroy action in my controller, it was working
> > > >> fine about 2 hours ago and now for some reason it has stopped working.
> > > >> Once I click on destroy I receive  ' Unknown action No action
> > > >> responded to destroy'. The action that I want it to redirect to is
> > > >> 'list' and this action does work as I have another action that
> > > >> redirects to 'list' fine. Could anyone let me in to what I I have done
> > > >> wrong please...?
>
> > > >> def list
> > > >>     [EMAIL PROTECTED] = Album.find(:all)
> > > >>      render(:action => 'album_list')
> > > >>     end
>
> > > >> def destroy
> > > >>       [EMAIL PROTECTED] = Album.find(params[:id])
> > > >>       [EMAIL PROTECTED]
> > > >>        redirect_to(:action =>'list')
> > > >>      end
>
> > > >> And in my view I have
>
> > > >> <% if @album != nil -%>
> > > >>         ID:     <%= @album.id %><br/>
> > > >>         Title:  <%= @album.title %> <br/>
> > > >>         Artist: <%= @album.artist %><br/>
> > > >>         Genre:  <%= @album.genre  %><br/>
> > > >>      <%  else -%>
> > > >>         No record found.
>
> > > >>      <% end -%>
> > > >>      <%= link_to('Back', :action => 'alt_album_list') %> |
> > > >>      <%= link_to('Edit', :action => 'edit', :id => @album.id ) %> |
> > > >>      <%= link_to('Destroy', {:action => 'destroy', id =>
> > > >> @album.id}, :confirm => '
> > > >>        Are you sure?') %>
>
> > > >> When I go into the logs I get the following error message
>
> > > >> Processing PublicController#destroy (for 127.0.0.1 at 2008-10-19
> > > >> 16:32:19) [GET]
> > > >>  Session ID:
> > > >> BAh7ByIKZmxhc2hJQzonQWN0aW9uQ29udHJvbGxlcjo6Rmxhc2g6OkZsYXNo
> > > >> SGFzaHsABjoKQHVzZWR7ADoMY3NyZl9pZCIlZmFlNWMzZDcxOWY5OTM0Yzhk
> > > >> ZDk0YTgwMDU4OWNkMDA=--5ecae299067ff9537732b80de514985b52f69fab
> > > >>  Parameters: {"controller"=>"public", "action"=>"destroy",
> > > >> "id"=>"15"}
>
> > > >> ActionController::UnknownAction (No action responded to destroy):
> > > >>    C:/Users/Keith/.netbeans/6.1/jruby-1.1/lib/ruby/gems/1.8/gems/
> > > >> actionpack-2.1.0/lib/action_controller/filters.rb:580:in
> > > >> `call_filters'
> > > >>    C:/Users/Keith/.netbeans/6.1/jruby-1.1/lib/ruby/gems/1.8/gems/
> > > >> actionpack-2.1.0/lib/action_controller/filters.rb:573:in
> > > >> `perform_action_with_filters'
> > > >>    C:/Users/Keith/.netbeans/6.1/jruby-1.1/lib/ruby/gems/1.8/gems/
> > > >> actionpack-2.1.0/lib/action_controller/benchmarking.rb:68:in
> > > >> `perform_action_with_benchmark'
> > > >>    C:/Users/Keith/.netbeans/6.1/jruby-1.1/lib/ruby/1.8/benchmark.rb:
> > > >> 293:in `measure'
> > > >>    C:/Users/Keith/.netbeans/6.1/jruby-1.1/lib/ruby/gems/1.8/gems/
> > > >> actionpack-2.1.0/lib/action_controller/benchmarking.rb:68:in
> > > >> `perform_action_with_benchmark'
> > > >>    C:/Users/Keith/.netbeans/6.1/jruby-1.1/lib/ruby/gems/1.8/gems/
> > > >> actionpack-2.1.0/lib/action_controller/rescue.rb:201:in
> > > >> `perform_action_with_rescue'
> > > >>    C:/Users/Keith/.netbeans/6.1/jruby-1.1/lib/ruby/gems/1.8/gems/
> > > >> actionpack-2.1.0/lib/action_controller/caching/sql_cache.rb:13:in
> > > >> `perform_action_with_caching'
> > > >>    C:/Users/Keith/.netbeans/6.1/jruby-1.1/lib/ruby/gems/1.8/gems/
>
> ...
>
> read more »- Hide quoted text -
>
> - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "ruby-on-rails-programming-with-passion" group.
To unsubscribe from this group, send email to
[EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/ruby-on-rails-programming-with-passion?hl=en?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to