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
-~----------~----~----~----~------~----~------~--~---