# Parametri submit

**URL:** <https://www.ruby-forum.com/t/parametri-submit/215343>\
**Category:** IT\
**Created:** [December 31, 2011, 4:04pm UTC](https://www.ruby-forum.com/t/parametri-submit/215343 "2011-12-31T16:04:24Z")\
**Posts on this page:** 8\
**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:** [December 31, 2011, 4:04pm UTC](https://www.ruby-forum.com/t/parametri-submit/215343/1 "2011-12-31T16:04:24Z")

</div>

Scusate se apro molti topic…

pensavo che il mio problema fosse sul link to e invece giustamente per  
toccare il db c’entra sempre il submit…

submit accetta parametri particolari per cambiare controller?

mi spiego con il solito esempio… ho un client con N games

sono nella pagina dell’utente pinco pallino e clicco su un link che mi  
porta alla visualizzazione di tutti i games (la index di games) con l’id  
del cliente appresso…

ora nella vista di tutti i games (index) ho i link a edit, show e  
destroy…

ecco la vista index di game:

# Listing games

\<% @games.each do |game| %\>

```
<td><%= link_to 'Show', game %></td>
<td><%= link_to 'Edit', edit_game_path(game) %></td>
<td><%= link_to 'Destroy', game, :confirm => 'Are you sure?',

```

:method=\> :delete %\>

\<% end %\>

| Name | client |
| --- | --- |
| \<%=h game.name %\> | \<%=h game.client\_id %\> | \<% form\_for(game) do |f| %\> \<%= f.error\_messages %\> 

\<%= f.submit 'PROVA' %\>

\<% end %\> |

  

il problema è che la submit andrebbe al controller games ma al metodo  
index… io invece vorrei che andasse a un metodo mio (diciamo ADD) o un  
altro… anche edit mi andrebbe bene, tanto sto uscendo pazzo e mi  
accontento di qualsiasi cosa 🙂

vorrei cioè associare + games a un certo client vedendo tutti i games  
presenti…

grazie

---

<div class="post-metadata">

**Author:** ![silviodel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c2a13f/32.png) [@silviodel](https://www.ruby-forum.com/u/silviodel)\
**Post date:** [December 31, 2011, 4:05pm UTC](https://www.ruby-forum.com/t/parametri-submit/215343/2 "2011-12-31T16:05:49Z")

</div>

PS so già che il problema successivo sarà che ogni singolo game potrà  
essere associato a un singolo client per volta… ma la cosa la dovrei  
risolvere con un altra classe che gestisce la lista di games… ma non  
c’entra con il mio problema attuale…

grazie a tutti 🙂

---

<div class="post-metadata">

**Author:** ![silviodel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c2a13f/32.png) [@silviodel](https://www.ruby-forum.com/u/silviodel)\
**Post date:** [January 2, 2012, 9:50am UTC](https://www.ruby-forum.com/t/parametri-submit/215343/3 "2012-01-02T09:50:25Z")

</div>

Forse con un approccio pi RESTfull risolvi.

Hai pensato di aggiungere un model/controller/vierw che si occupi di  
gestire questo caso senza andare nella index di games? Praticamente ti  
trovi con un controller con tutti i verbi REST liberi e pronti per  
essere  
usati per gestire il caso, puoi decide di persistere le informazioni per  
tracciare l’operazione, gestirla modificandola od eliminandola senza  
andare  
ad intaccare la RESTfiullness 😃 in altri controller.

---

<div class="post-metadata">

**Author:** ![silviodel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c2a13f/32.png) [@silviodel](https://www.ruby-forum.com/u/silviodel)\
**Post date:** [January 2, 2012, 11:35am UTC](https://www.ruby-forum.com/t/parametri-submit/215343/4 "2012-01-02T11:35:53Z")

</div>

Riccardo L. wrote in post #1039122:

> Forse con un approccio pi RESTfull risolvi.
> 
> Hai pensato di aggiungere un model/controller/vierw che si occupi di  
> gestire questo caso senza andare nella index di games? Praticamente ti  
> trovi con un controller con tutti i verbi REST liberi e pronti per  
> essere  
> usati per gestire il caso, puoi decide di persistere le informazioni per  
> tracciare l’operazione, gestirla modificandola od eliminandola senza  
> andare  
> ad intaccare la RESTfiullness 😃 in altri controller.

eeeemh… beh… che dire… per ora grazie…

non so cosa sia RESTfull ma vedo di documentarmi… sperando di  
risolvere…

grazie

---

<div class="post-metadata">

**Author:** ![silviodel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c2a13f/32.png) [@silviodel](https://www.ruby-forum.com/u/silviodel)\
**Post date:** [January 2, 2012, 11:40am UTC](https://www.ruby-forum.com/t/parametri-submit/215343/5 "2012-01-02T11:40:16Z")

</div>

Silvio Dell’Oste wrote in post #1039129:

> Riccardo L. wrote in post #1039122:
> 
> > Forse con un approccio pi RESTfull risolvi.
> > 
> > Hai pensato di aggiungere un model/controller/vierw che si occupi di  
> > gestire questo caso senza andare nella index di games? Praticamente ti  
> > trovi con un controller con tutti i verbi REST liberi e pronti per  
> > essere  
> > usati per gestire il caso, puoi decide di persistere le informazioni per  
> > tracciare l’operazione, gestirla modificandola od eliminandola senza  
> > andare  
> > ad intaccare la RESTfiullness 😃 in altri controller.
> 
> eeeemh… beh… che dire… per ora grazie…
> 
> non so cosa sia RESTfull ma vedo di documentarmi… sperando di  
> risolvere…
> 
> grazie

mmm… mi sa che si tratta di rails 3… che per ora non tocco…  
perchè? perchè devo cercare di capire come funziona tutto l’ambaradan…  
e vorrei usare meno “magia” possibile…

insomma farei volentieri a meno dei vari moduli che fanno cose  
magicamente inizialmente… per poi usarli quando capisco quasi tutto…

mi pare strano pensare che un submit debba dipendere per forza dalla  
vista comunque… nel senso che se io faccio un submit non vedo perchè  
nel conroller devo per forza chiamare il metodo che ha il nome della  
pagina di provenienza ☹

---

<div class="post-metadata">

**Author:** ![silviodel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c2a13f/32.png) [@silviodel](https://www.ruby-forum.com/u/silviodel)\
**Post date:** [January 2, 2012, 11:46am UTC](https://www.ruby-forum.com/t/parametri-submit/215343/6 "2012-01-02T11:46:13Z")

</div>

2012/1/2 Silvio Dell’Oste [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

> Silvio Dell’Oste wrote in post #1039129:
> 
> mi pare strano pensare che un submit debba dipendere per forza dalla  
> vista comunque… nel senso che se io faccio un submit non vedo perch  
> nel conroller devo per forza chiamare il metodo che ha il nome della  
> pagina di provenienza ☹

Sono le convetions di Rails, ma in genere le puoi modificare via named  
params sul sull’helper della form

---

<div class="post-metadata">

**Author:** ![silviodel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c2a13f/32.png) [@silviodel](https://www.ruby-forum.com/u/silviodel)\
**Post date:** [January 2, 2012, 12:01pm UTC](https://www.ruby-forum.com/t/parametri-submit/215343/7 "2012-01-02T12:01:38Z")

</div>

On 31 December, 2011, at 16:04, Silvio Dell’Oste wrote:

> \<% form\_for(game) do |f| %\>  
> \<%= f.error\_messages %\>
> 
> \<%= f.submit 'PROVA' %\>
> 
> \<% end %\>

Prova cos:

In routes.rb definisci la tua azione custom e assicurati che abbia un  
nome.

match ‘games/add’ =\> ‘games#add’, :as =\> ‘add\_game’

Poi da terminale fai  
rake routes  
per controllare che sia stata registrata correttamente e abbia il nome  
desiderato.

Poi cambia il tag form\_for:  
\<% form\_for(game, :url =\> add\_game\_path) do |f| %\>

Cos la action della form dovrebbe puntare alla tua azione custom.

Almeno su Rails 3 tutto questo dovrebbe pi o meno fare quello che  
desideri, fammi sapere se va bene anche per il 2 🙂

Alessandro

---

<div class="post-metadata">

**Author:** ![silviodel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c2a13f/32.png) [@silviodel](https://www.ruby-forum.com/u/silviodel)\
**Post date:** [January 2, 2012, 1:17pm UTC](https://www.ruby-forum.com/t/parametri-submit/215343/8 "2012-01-02T13:17:57Z")

</div>

Alessandro M. wrote in post #1039134:

> On 31 December, 2011, at 16:04, Silvio Dell’Oste wrote:
> 
> > \<% form\_for(game) do |f| %\>  
> > \<%= f.error\_messages %\>
> > 
> > \<%= f.submit 'PROVA' %\>
> > 
> > \<% end %\>
> 
> Prova cos:
> 
> In routes.rb definisci la tua azione custom e assicurati che abbia un  
> nome.
> 
> match ‘games/add’ =\> ‘games#add’, :as =\> ‘add\_game’
> 
> Poi da terminale fai  
> rake routes  
> per controllare che sia stata registrata correttamente e abbia il nome  
> desiderato.
> 
> Poi cambia il tag form\_for:  
> \<% form\_for(game, :url =\> add\_game\_path) do |f| %\>
> 
> Cos la action della form dovrebbe puntare alla tua azione custom.
> 
> Almeno su Rails 3 tutto questo dovrebbe pi o meno fare quello che  
> desideri, fammi sapere se va bene anche per il 2 🙂
> 
> Alessandro

purtroppo rake aborted!  
undefined method `match’ for main:Object

sei comunque gentilissimmo, grazie Alessandro 🙂

vorrei chiedere un altra cosa… credo di non passare bene i  
parametri…

mi spiego…

o con games o con address non fa differenza… faccio l’esempio client  
che è in relazione 1:1 (has\_one) address…

nella pagina di modifica client ho un link\_to…

\<%= link\_to “edit address”, :action =\> “edit”, :controller =\>  
“addresses”, :id =\> @client.address.id %\>

che pensavo di aver scritto male… scrivo quindi..  
\<%= link\_to “edit address”, :action =\> “edit”, :controller =\>  
“addresses”, :client\_id =\> @client.address.id %\>

ma succede una cosa strana… nel senso che se scrivo il codice come  
prima o senza proprio :id =\> … vado nel controller addresse all’azione  
ediit e vado all’indirizzo diciamo giusto da modificare… se uso la  
seconda istruzione vado all’indirizzo sbagliato…

esempio: client con id 2 associato a address con id 3 (client\_id  
dovrebbe essere 2)

col primo codice vado a …/addresses/3/edit, col secondo a  
…/addresses/2/edit?client\_id=3, cioè inverte gli id… insomma direi  
che non passo bene i parametri ☹
