A questo punto gli ultimi form che dobbiamo aggiungere sono quelli relativi alla registrazione e al login degli utenti, per poi far sì che solo gli utenti registrati possano inviare messaggi e creare nuovi argomenti di discussione. La prima cosa necessaria sarà quindi la possibilità per un autore di registrarsi e di effettuare il login.
Creiamo quindi un nuovo controller adibito a questo scopo, con due metodi new e login tramite il solito script/generate.
L'azione new sarà molto simile a quelle già realizzate, ma ovviamente il form sarà differente, in quanto avrà bisogno di avere tre caselle di testo: una per il nickname, una per la password ed una per verificare quest'ultima. Per realizzare il modulo, però, utilizzeremo un codice leggermente differente:
<%= start_form_tag(:action=>"new") %>
Username: <%= text_field( "author", "name") %>
<br />
Password: <%= password_field( "author", "password") %>
<br />
Verifica Password: <%= password_field( "author", "password_confirmation" ) %>
<br />
<%= submit_tag "registra" %>
<%= end_form_tag %>
Questa volta abbiamo usato degli helper per creare i tag del form, il cui significato dovrebbe essere chiaro. Abbiamo anche usato degli helper leggermente più sofisticati per gestire user e password, potete riconoscerli in quanto il loro nome non finisce con "_tag". Questi helper, sono specificamente pensati per costruire form dedicati alla creazione di oggetti, ed ovviamente ne esistono di adatti ad ogni tipo di input, come aree di testo, check box, file upload e così via.
Quando l'azione richiamata dal form andrà ad analizzare i valori tramite params, troverà qualcosa di meglio di una semplice stringa, infatti alla chiave "author" corrisponderà un Hash con chiavi "password", "password_confirmation" e "name". Se vi state chiedendo dove sia l'utilità in tutto ciò, vi basti ricordare che il metodo Author.new può accettare in input proprio un Hash di questo tipo, e quindi la creazione di un oggetto diventa semplicemente Author.new(params['author']).
Usando lo stesso approccio già usato per creare un nuovo topic, potremo definire il metodo relativo all'azione in questo modo:
def new
if request.post?
@author=Author.new(params['author'])
if @author.save
logged
end
end
end
logged per ora non farà altro che rimandare l'utente alla prima pagina, si tratta di un metodo protetto definito in questo modo:
def logged
redirect_to(:controller=>"home")
end
protected :logged
Duck Typing, tipizzazione per comportamentiRiconoscere un oggetto non dal tipo ma dai metodi che espone, quindi... |
Introduzione a RackImplemetare uno stack di middleware per gestire efficacemente... |
Le meravigliose novità di Rails 3La fusione con Merb, l'ottimizzazione del framework, l'introduzione... |
CouchDB e Rails: la gemma sul divanoFacciamo la conoscenza di CouchRest, una alternativa ad ActiveRecord... |
JRuby: Java e Ruby insiemeIntroduzione pratica alla piattaforma JRuby, per utilizzare classi... |
Guida ActiveSupportUna panoramica sulle funzionalità più importanti di ActiveSupport:... |
Guida Ruby On Rails 2Scoprire le novità di Ruby on Rails 2, memorizzare i dati con... |
Guida Ruby e il WebUn percorso alla scoperta delle potenzialità offerte da Ruby nella... |
Ogni mercoledì, direttamente nella tua e-mail: articoli, guide e tutorial su Ruby e Ruby on Rails .
Iscriviti alla newsletter