Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Il dialogo fra viste e controller

Il passaggio di informazioni dalle viste al controller e viceversa; link e form
Il passaggio di informazioni dalle viste al controller e viceversa; link e form
Link copiato negli appunti

Il passaggio di dati dalla vista al controller avviene per mezzo della variabile params, un hash che contiene tutti i parametri disponibili condivisi sia al controller che alla vista. Per osservare il funzionamento della variabile params modifichiamo il layout che abbiamo utilizzato per tutte le viste, app/views/layouts/standard.html.erb, e introduciamo il codice per visualizzare in testa a tutte le pagine HTML il contenuto della variabile params:

...
</head>
<body>
<%= debug(params) %>
<p style="color: green"><%= flash[:notice] %></p>
...

Puntando il browser all'indirizzo http://0.0.0.0:3000/bookmarks vedremo apparire in testa alla pagina un rettangolo grigio che ci informa del contenuto della variabile:

--- !map:HashWithIndifferentAccess 
action: index
controller: bookmarks

I parametri disponibili sono quindi action e controller, che identificano il controller e la action attivati. Se proviamo a selezionare il link show in calce a uno dei bookmark visualizzati, il contenuto della variabile params cambierà in:

--- !map:HashWithIndifferentAccess 
action: show
id: "1"
controller: bookmarks

Ora è apparso il parametro id, che è utilizzato dalla action show del controller BookmarksController per estrarre il bookmark che si vuole visualizzare:

@bookmark = Bookmark.find(params[:id])

Nei due esempi appena visti i parametri sono espresso tramite l'URL che richiama la pagina che si vuole visualizzare. Proviamo ora a realizzare un form; inseriamo il seguente codice nella vista app/views/bookmarks/index.html.erb:

<h1>Listing bookmarks</h1>
<% form_tag '/bookmarks', :method => :get do -%>
  <%= label_tag 'some_text' %>
  <%= text_field_tag 'some_text' %>
  <%= submit_tag 'Ok' %>
<% end -%>
<ul>
<% for bookmark in @bookmarks %>
...

L'istruzione form_tag segnala l'inizio del form, che si conclude con l'istruzione end; '/bookmarks' indica il path della action da abbinare al form mentre :method => :get indica il metodo HTTP da utilizzare per l'invio del form.

All'interno del blocco del form appaiono in ordine: il tag per generare la label da abbinare al text field con id 'some_text', il text field e il bottone di submit che avrà come etichetta 'Ok'.

Compilando il text field e premendo il pulsante Ok siamo riportati sulla stessa pagina, ma la variabile params contiene ora il valore del text field e la label del bottone utilizzato per il submit del form:

--- !map:HashWithIndifferentAccess 
commit: Ok
action: index
some_text: lorem ipsum
controller: bookmarks

La action show del controller bookmarks potrà quindi accedere a questi parametri utilizzando params[:some_text] e params[:commit], ed elaborare i dati secondo la logica dell'applicazione.

È possibile costruire form più complessi; oltre al text_field_tag, Rails mette a disposizione differenti tag per la generazione di input differenti, fra cui:

  • text_area_tag - per la generazione di input di tipo text area
  • check_box_tag - per i check bok
  • radio_button_tag - per i radio button
  • password_fied_tag - per gli input di tipo password
  • select_tag - per la generazione di liste a discesa

Abbinando un id differente ad ogni tag introdotto nel form si possono rendere disponibili i valori dei differenti campi al controller, e quindi intercettare l'input dell'utente per utilizzarlo nel codice del controller. Dovrà essere nostra cura controllare la bontà dei dati inseriti dall'utente prima di utilizzarli nel codice dell'applicazione.

Se vuoi aggiornamenti su Development inserisci la tua email nel box qui sotto:

Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.

Ti consigliamo anche