Afin de montrer la suite des opérations, voici un exemple de la création d'une application Web avec minirails qui permet d'incrémenter 3 compteurs, chacun désigné par une couleur: bleu, blanc ou rouge.
La première page est la suivante:
Après avoir appuyé sur ++ dans la ligne correspondant à rouge, on obtient:
En tapant du le lien Terminer, on obtient:
unzip minirails.zip
cd minirails
ruby minirails compteur
qui produit la sortie suivante:
create compteur
create compteur/app
create compteur/app/controllers
create compteur/app/db
create compteur/app/models
create compteur/app/views
create compteur/app/views/layouts
create compteur/script
create compteur/script/server
create compteur/script/generate
cd compteur
ruby script/generate controller compteur
qui produit la sortie suivante:
create app/controllers/compteur_controller.rb
create app/models/compteur.rb
create app/views/compteur
create app/views/layouts/compteur.rhtml
couleur;valeur
bleu;1
blanc;0
rouge;4
require "../common/application_controller.rb"
require "app/models/compteur.rb"
class CompteurController < ApplicationController
# initialisation à partir du fichier de BD
def index
Compteur.load_db(File.join("app","db","compteurs.csv"))
@noms_valeurs=Compteur.find(:all).collect{|c|[c.couleur,c.valeur]}
end
def bump(id)
index=id[0].to_i
val=Compteur.find(index).valeur.to_i # récupérer la valeur entière
val+=1 # incrémenter
Compteur.find(index).valeur=val.to_s # sauver la valeur texte
end
def save
Compteur.save_db
render(:layout=>false)
end
end
Contenu de app/views/layouts/compteur.rhtml
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>Minirails application: compteur </title>
</head>
<body>
<%= @content_for_layout %>
<table border="1">
<% Compteur.find(:all).each do |c|%>
<tr>
<td><%= c.couleur %></td>
<td><%= c.valeur %></td>
<td><%= link_to("++",{:controller=>"compteur",
:action=>"bump",
:id=>c.id.to_s})%>
</td>
</tr>
<% end %>
</table>
<%= link_to("Terminer",{:controller=>"compteur",:action=>"save"}) %>
</body>
</html>
Contenu de app/views/compteur/index.rhtml
<h2>Valeurs initiales des compteurs</h2>
Contenu de app/views/compteur/bump.rhtml
<h2>Nouvelles valeurs de compteurs...</h2>
Contenu de app/views/compteur/save.rhtml
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>Minirails application: compteur </title>
</head>
<body>
<h2>Merci d'avoir incrémenté nos compteurs...</h2>
</body>
</html>
ruby script/server
qui devrait afficher quelque comme ceci
[2008-11-11 14:05:04] INFO WEBrick 1.3.1
[2008-11-11 14:05:04] INFO ruby 1.8.6 (2008-03-03) [universal-darwin9.0]
[2008-11-11 14:05:04] INFO WEBrick::HTTPServer#start: pid=1732 port=3000
Attention: lancer le serveur dans le répertoire de l'application ici compteur car toutes les références sont relatives à ce dernier.
http://localhost:3000/compteur
En cliquant sur les ++, on peut incrémenter les compteurs. On peut aussi terminer l'application en cliquant sur le lien Terminer.