Hi,
I think you're missing another "end" in the update action. You only have one
"end' which is for the "if" statement. You never "end" the
update action, so destroy action is not really existed.
On Mon, Oct 20, 2008 at 12:36 PM, <[EMAIL PROTECTED]> wrote:
>
>
> 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
> > > > >> @albums = Album.find(:all)
> > > > >> render(:action => 'album_list')
> > > > >> end
> >
> > > > >> def destroy
> > > > >> @album = Album.find(params[:id])
> > > > >> @album.destroy
> > > > >> 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
-~----------~----~----~----~------~----~------~--~---