Nell'articolo precedente abbiamo visto come è possibile usare jQuery con Rails. Sebbene l'utilizzo di Rails per creare applicazioni dinamiche in AJAX vada oltre lo scopo dell'articolo originale, per verificare il corretto funzionamento di jQuery proviamo a creare un semplice guestbook composto da una sola pagina con la possibilità di inserire messaggi via AJAX.
Partiamo da zero, creando un nuovo progetto chiamato jguestbook
. Il sorgente dell'applicazione, a scopo didattivo, è allegato a questo articolo.
$ rails jguestbook
create
create app/controllers
create app/helpers
create app/models
create app/views/layouts
...
create doc/README_FOR_APP
create log/server.log
create log/production.log
create log/development.log
create log/test.log
$ cd jguestbook
Creiamo il modello Message
ed il rispettivo controller che si occuperà dell'inserimento e del salvataggio dei messaggi. Per comodità, utilizziamo il generator scaffold
.
$ ruby script/generate scaffold message username:string subject:string body:text
exists app/models/
exists app/controllers/
exists app/helpers/
create app/views/messages
exists app/views/layouts/
...
create db/migrate
create db/migrate/20090202232010_create_messages.rb
$ rake db:migrate
== CreateMessages: migrating =================================================
-- create_table(:messages)
-> 0.0027s
== CreateMessages: migrated (0.0028s) ========================================
Apriamo il file routes.rb
e mappiamo la root del sito all'azione MessageController#index
. Assicuriamoci di rimuovere la pagina public/index.html
o Rails continuerà a mostrare come homepage la pagina di default anche se è configurata un'azione specifica. Avviando il server dovremmo vedere una pagina simile allo screenshot seguente.
Anche se pressoché priva di appeal, l'applicazione è perfettamente funzionante. Possiamo inserire nuovi messaggi, modificarli e rimuoverli. Provare per credere.
E' arrivato il momento di integrare jQuery e qualche funzionalità AJAX all'interno della nostra applicazione. Come prima cosa installiamo il plugin ed includiamo jQuery all'interno file di layout nella cartella /app/views/layouts/messages.html.erb
.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<title>Messages: <%= controller.action_name %></title>
<%= stylesheet_link_tag 'scaffold' %>
<%= javascript_include_tag :defaults %>
</head>
<body>
<p style="color: green"><%= flash[:notice] %></p>
<%= yield %>
</body>
</html>
Ora modifichiamo la vista dell'azione #index
per consentire l'inserimento di un nuovo messaggio via AJAX.
L'esempio finale completo è allegato a questo articolo. E' bene sottolineare che l'applicazione ha uno scopo puramente dimostrativo e non include nessun controllo sulla validità dei dati in ingresso. Il suo obiettivo è semplicemente dimostrare l'integrazione di jQuery in un'applicazione Rails.