# Aggiunta azione e ActiveRecord::RecordNotFound

**URL:** <https://www.ruby-forum.com/t/aggiunta-azione-e-activerecord-recordnotfound/201971>\
**Category:** IT\
**Created:** [January 19, 2011, 1:06am UTC](https://www.ruby-forum.com/t/aggiunta-azione-e-activerecord-recordnotfound/201971 "2011-01-19T01:06:46Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![dubstep](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/cdc98d/32.png) [@dubstep](https://www.ruby-forum.com/u/dubstep)\
**Post date:** [January 19, 2011, 1:06am UTC](https://www.ruby-forum.com/t/aggiunta-azione-e-activerecord-recordnotfound/201971/1 "2011-01-19T01:06:46Z")

</div>

ciao ragazzi.  
ho un controller + model chiamato ‘categories’.  
oltre alle solite azioni (new, index, show…) volevo creare l’azione  
‘list’.

1. vado nel categories\_controller.rb ed aggiungo

def list  
@categories = Category.all  
end

1. creo la vista app/views/categories/list.html.erb

e quando vado su http:// ip /categories/list il seguente errore mi  
compare:

ActiveRecord::RecordNotFound in CategoriesController#show  
Couldn’t find Category with ID=list

ps: lo stesso errore mi compare con /categories/index e non con  
/categories/ (??? al quale corrisponde comunque la view index)

allora io dico, mannaggia a rails, che ho fatto di male?? su rails 2 una  
cosa così mai capitata!! l’applicazione è in rails3

siccome penso sia un problema di routes.rb, vi scrivo il suo contenuto:

BlogX::Application.routes.draw do

resources :news

get “sito/index”

get “sessions/create”

get “sessions/destroy”

match ‘login’ =\> ‘sessions#new’, :as =\> :new  
match ‘logout’=\> ‘sessions#destroy’, :as =\> :destroy

resources :sessions

resources :sito

resources :activities

resources :categories  
end

che devo fare? qualche suggerimento?

grazie a tutti! belli e brutti e a chi fa i rutti XD

---

<div class="post-metadata">

**Author:** ![dino\_d](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/b5ac83/32.png) [@dino\_d](https://www.ruby-forum.com/u/dino_d)\
**Post date:** [January 19, 2011, 8:40am UTC](https://www.ruby-forum.com/t/aggiunta-azione-e-activerecord-recordnotfound/201971/2 "2011-01-19T08:40:54Z")

</div>

Credo che manchi la routes.

resources :categories do  
get ‘list’  
end

ema

2011/1/19 Dino D. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

---

<div class="post-metadata">

**Author:** ![dino\_d](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/b5ac83/32.png) [@dino\_d](https://www.ruby-forum.com/u/dino_d)\
**Post date:** [January 19, 2011, 10:40am UTC](https://www.ruby-forum.com/t/aggiunta-azione-e-activerecord-recordnotfound/201971/3 "2011-01-19T10:40:51Z")

</div>

escludendo il fatto che potresti usare la action index per listare tutte  
le  
Categories, come ha fatto presente Emanuele, manca la rotta per quella  
action:

resources :categories do  
get ‘list’, :on =\> :collection # stabiliamo una GET per l’azione  
‘list’ che  
si rivolge ad una collezione di items. se fosse un singolo item,  
necessiterebbe  
di un id  
end

in caso volessi leggere qualcosa in pi sulle routes:

> **[Rails Routing from the Outside In — Ruby on Rails Guides](https://guides.rubyonrails.org/routing.html)**
>
> This guide covers the user-facing features of Rails routing.After reading this guide, you will know: How to interpret the code in config/routes.rb. How to construct your own routes, using either the preferred resourceful style or the match method....

ciao,  
A.

Il 19/01/2011 08:40, Emanuele DelBono ha scritto:

> > ciao ragazzi.  
> > 2. creo la vista app/views/categories/list.html.erb  
> > allora io dico, mannaggia a rails, che ho fatto di male?? su rails 2 una  
> > get “sessions/create”  
> > resources :activities
> > 
> > * * *
> > 
> > Ml mailing list  
> > [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
> > [http://lists.ruby-it.org/mailman/listinfo/ml](http://lists.ruby-it.org/mailman/listinfo/ml)

–  
[http://twitter.com/apeacox](http://twitter.com/apeacox)

---

<div class="post-metadata">

**Author:** ![dino\_d](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/b5ac83/32.png) [@dino\_d](https://www.ruby-forum.com/u/dino_d)\
**Post date:** [January 25, 2011, 10:03am UTC](https://www.ruby-forum.com/t/aggiunta-azione-e-activerecord-recordnotfound/201971/4 "2011-01-25T10:03:39Z")

</div>

in rails 2, se non ricordo male  
con queste due righe in routes.rb  
map.connect ‘:controller/:action/:id’  
map.connect ‘:controller/:action/:id.:format’  
dovrebbero risolvere le dipendenze.  
L’unico dubbio è che “list” possa essere una parola riservata.  
Prova, per curiosità a chiamarla “pippo”

Ciao Michele.

---

<div class="post-metadata">

**Author:** ![dino\_d](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/b5ac83/32.png) [@dino\_d](https://www.ruby-forum.com/u/dino_d)\
**Post date:** [January 19, 2011, 1:38pm UTC](https://www.ruby-forum.com/t/aggiunta-azione-e-activerecord-recordnotfound/201971/5 "2011-01-19T13:38:43Z")

</div>

senza nulla togliere ad emanuele, la soluzione che mi ha risolto il  
problema è quella di andrea, che ha specificato meglio.  
comunque grazie a tutti.

ma toglietemi una curiosità, devo fare sto ambaradam ogni volta che  
aggiungo un’action? io non ho ricordi di averlo mai fatto con rails 2,  
mi spiegate sta cosa?

grazie

---

<div class="post-metadata">

**Author:** ![dino\_d](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/b5ac83/32.png) [@dino\_d](https://www.ruby-forum.com/u/dino_d)\
**Post date:** [January 25, 2011, 11:19am UTC](https://www.ruby-forum.com/t/aggiunta-azione-e-activerecord-recordnotfound/201971/6 "2011-01-25T11:19:31Z")

</div>

Maurizio De magnis wrote in post #977347:

> Tutti i metodi extra del  
> controller in genere dovrebbero portarti a riflettere sulla loro  
> effettiva necessita’.

Direi ottima soluzione.

---

<div class="post-metadata">

**Author:** ![dino\_d](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/b5ac83/32.png) [@dino\_d](https://www.ruby-forum.com/u/dino_d)\
**Post date:** [January 25, 2011, 11:03am UTC](https://www.ruby-forum.com/t/aggiunta-azione-e-activerecord-recordnotfound/201971/7 "2011-01-25T11:03:15Z")

</div>

Il 19 gennaio 2011 13:38, Dino D. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha scritto:  
[cut]

> ma toglietemi una curiosit, devo fare sto ambaradam ogni volta che  
> aggiungo un’action? io non ho ricordi di averlo mai fatto con rails 2,  
> mi spiegate sta cosa?

In rails 2 era presente, in routes.rb, la regola di routing di default  
(come ha scritto Michele nell’ultimo reply):

map.connect ‘:controller/:action/:id’

Per ottenere lo stesso effetto in rails 3 puoi usare la nuova sintassi  
(gia’ presente nella forma commentata):

match ‘:controller(/:action(/:id))’

fonte: [Rails Routing from the Outside In — Ruby on Rails Guides](http://guides.rubyonrails.org/routing.html#non-resourceful-routes)

Diciamo che “l’ambaradan” e’ imho “consigliato” poiche’ in molti casi  
ti capita di gestire solo risorse restful e quindi le regole di  
routing generate da

resources :categories

bastano a mappare le azioni del controller. Tutti i metodi extra del  
controller in genere dovrebbero portarti a riflettere sulla loro  
effettiva necessita’. Detto questo, risulta comodo tenere traccia di  
queste aggiunte in modo piu’ esplicito (come ha detto Andrea):

resources :categories do  
get ‘list’, :on =\> :collection  
end

In sintesi: meno “Magia” nascosta in favore di una maggiore  
espressivita’.

Maurizio
