Raul,
I do have a scaffolded 'Album' and I also have a Controller called
Albums. The controller called Albums should of been called Admin but
as far as I can tell, there is no way to build scaffold around a table
without using that table name as the default for all your files. I do
not think this is possible in Rails 2.1 where as in the old rails you
could use - scaffold :album
Correct me if I'm wrong the only reason when I clicked on destroy and
it was'nt redirecting me to the action that I wanted it to is because
in my AlbumsController there is
def destroy
@album = Album.find(params[:id])
@album.destroy
respond_to do |format|
format.html { redirect_to(albums_url) } ******* I think this
may of been the reason why it was picking up another action, is this
right in thinking so?
format.xml { head :ok }
would this override what I have in my PublicController?***********
end
end
Just one more question Raul how did you know that I had a
scaffold :album?
Thanks
Keith
On Oct 20, 10:25 pm, "raul parolari" <[EMAIL PROTECTED]> wrote:
> Keith,
>
> there is something odd; you have scaffolded 'Album', but then you called
> the Controller 'Public'.. no wonder that Rails is confused. Is there a
> reason that you need to call your controller "Public"? it does not make
> sense as a name for a controller, and moreover if you call it Album,
> everything will be easier; you would go with the Rails wind, not fight
> against it.
>
> Also: using Urls like '/public/destroy/id' is really going back to Rails 1.
> The action 'destroy' (or 'create', etc) should not be part of the Url; this
> is the reason that we specify :method => :destroy.
> If you wanted to use '/public/destroy/id' then you should remove the
> ':method => :destroy'. However, beware that this is not a good design.
>
> I suggest you to read the AWDWR book that you mentioned: see how they obtain
> the 'product' controller and model, and how they end up with clean Urls and
> helpers:
>
> <%= link_to 'Show', product %><br/>
> <%= link_to 'Edit', edit_product_path(product) %><br/>
> <%= link_to 'Destroy', product, :confirm => 'Are you sure?',
> :method => :delete %>
>
> I think that if you used these techniques not only you would simplify
> tremendously your work, but you would also learn something valuable (instead
> of those insane tips like '/public/destroy/37' from those blogs and forums,
> that teach the wrong way to do things)
>
> Raul
>
>
>
> 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-serie...
> > .
>
> > 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
> > [EMAIL PROTECTED] = 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 = ''
> > [EMAIL PROTECTED] = 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'
> > [EMAIL PROTECTED] = Album.find(:first,
> > :conditions => ["release_date <= ? AND artist LIKE ?",release_date,
> > '%' + artist +'%'],
> > :order => 'title ASC')
>
> > end
>
> > def list
> > [EMAIL PROTECTED] = Album.find(:all)
> > render(:action => 'album_list')
> > end
>
> > def show
> > @album = Album.find(params['id'])
> > render(:action => 'show_album')
> > end
>
> > def new
> > [EMAIL PROTECTED] = Album.new
> > end
>
> > def create
> > [EMAIL PROTECTED] = 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
> > [EMAIL PROTECTED] = Album.find(params['id'])
> > [EMAIL PROTECTED]
> > 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
>
> ...
>
> 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
-~----------~----~----~----~------~----~------~--~---