# Aggiungere una action

**URL:** <https://www.ruby-forum.com/t/aggiungere-una-action/213159>\
**Category:** IT\
**Created:** [October 25, 2011, 2:27pm UTC](https://www.ruby-forum.com/t/aggiungere-una-action/213159 "2011-10-25T14:27:10Z")\
**Posts on this page:** 5\
**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:** [October 25, 2011, 2:27pm UTC](https://www.ruby-forum.com/t/aggiungere-una-action/213159/1 "2011-10-25T14:27:10Z")

</div>

Ciao a tutti,  
Vorrei aggiungere una action al mio controller completa di view.

Per la precisione vorrei aggiungere la action “close” e ho provato in  
questo  
modo:

1. Al controller ho aggiunto il metodo close
2. Fra le view del controller ho aggiunto il file close.html.erb
3. Al route.rb ho aggiunto: match ‘controller/close’ =\>  
‘controller#close’

Mi ritrovo però ad essere rediretto sulla show quando clicco su un link  
impostato come:  
link\_to ‘Close’, { :controller =\> :controller, :action =\> :close }

C’è forse un conflitto di rotte?

Inoltre vorrei che rispondesse al path ~/controller/close/n come posso  
fare?

Grazie a tutti

---

<div class="post-metadata">

**Author:** ![nimbuz77](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/3be4f8/32.png) [@nimbuz77](https://www.ruby-forum.com/u/nimbuz77)\
**Post date:** [October 25, 2011, 2:41pm UTC](https://www.ruby-forum.com/t/aggiungere-una-action/213159/2 "2011-10-25T14:41:28Z")

</div>

per ottenere esattamente quello che hai chiesto, puoi definire la rotta  
in  
questo modo:

get ‘/controller/close/:n’ =\> ‘controller#close’, :as =\>  
:controller\_close

e usarla nelle view con il suo nome:

link\_to ‘Close’, controller\_close\_path(qui\_metti\_il\_parametro\_n)

nel controller, potrai leggere il parametro con params[:n]

se vuoi cambiare il nome del parametro, da “n” a qualcosa di pi  
autoesplicativo  
(tipo “id”), ti baster cambiare il suo nome nella rotta.

qui troverai una manciata di guide introduttive che potresti ritenere  
utili:

> **[Ruby on Rails Guides](https://guides.rubyonrails.org/)**
>
> Ruby on Rails Guides

ciao,  
A.

Il 25/10/2011 14:27, Nimbuzz 77 ha scritto:

---

<div class="post-metadata">

**Author:** ![nimbuz77](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/3be4f8/32.png) [@nimbuz77](https://www.ruby-forum.com/u/nimbuz77)\
**Post date:** [October 25, 2011, 3:22pm UTC](https://www.ruby-forum.com/t/aggiungere-una-action/213159/3 "2011-10-25T15:22:09Z")

</div>

Ti ringrazio, le tue indicazioni sono state precise.

---

<div class="post-metadata">

**Author:** ![nimbuz77](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/3be4f8/32.png) [@nimbuz77](https://www.ruby-forum.com/u/nimbuz77)\
**Post date:** [October 26, 2011, 1:59pm UTC](https://www.ruby-forum.com/t/aggiungere-una-action/213159/4 "2011-10-26T13:59:00Z")

</div>

Grazie.

---

<div class="post-metadata">

**Author:** ![nimbuz77](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/3be4f8/32.png) [@nimbuz77](https://www.ruby-forum.com/u/nimbuz77)\
**Post date:** [October 26, 2011, 12:33pm UTC](https://www.ruby-forum.com/t/aggiungere-una-action/213159/5 "2011-10-26T12:33:00Z")

</div>

Se stai gestendo la risorsa, es:  
resources :articles

c’è un modo ancora più semplice:

resource :articles do  
get :close  
end

otterrai la seguente rotta:  
article\_close GET /articles/:article\_id/close(.:format)

nel controller:

def close  
article = Article.find params[:article\_id]  
article.close  
redirect\_to article, :notice =\> “Article has been closed succesfully”  
end
