Midilibre.fr
Tous les blogs | Alerter le modérateur| Envoyer à un ami | Créer un Blog


23/10/2009

[rails] - Un hello world en ruby on rails

rails.jpeg

Ruby on rails est un framework intéressant mais la documentation pour le débutant est délicate à trouver, et encore plus en français j'ai donc décidé de faire quelques billets sur ce framework. Pour ceux qui se demande se qu'est Ruby on Rails je les renvois a l'excellent wikipedia.

Nous allons voir le plus simple des exemples que l'on puisse creér en RoR : un petit programme qui va nous dire soit bonjour soit aurevoir.

Placer vous en ligne de commande et tapez :

rails bonjour_monde -d mysql
le denier argument est bien entendu à modifier si vous utiliser un autre type de base de donnée (sqlite3...)

Nous allons ensuite rentrer dans le répertoire que vient de nous créer rails, ne tenez pas compte du nombre de fichier. C'est un peu affolant au début mais ce que vous devez retenir pour aujourd'hui c'est qu'il à généré d'un coté les éléments de type code (ce que nous allons voir dans app/controllers) et les répertoires de vue qui seront ce que va nous afficher le navigateur (app/view).

cd bonjour_monde

modifiez ensuite config/database.yml en fonction de sa base de données MySql (attention sur mon poste localhost ne fonctionne pas il m'a fallut mettre 127.0.0.1. Autre point délicat respecter les espaces aprés les :

Créons la base de données :

rake db:create

voyons si tout fonctionne en lançant :

script/server

Avec votre navigateur connectez vous sur localhost:3000, vous devriez avoir ceci :

rails_c.jpg

C'est la page d'accueil qui nous indique que notre serveur fonctionne bien, et qu'il n'y a pour l'instant rien de configurer.
Nous allons créer notre premier controller pour afficher un message.

script/generate controller message

Dans le dossier app/controllers vous avez maintenant un nouveau fichier avec uniquement cette entrée :

class MessageController < ApplicationController
end


Comme nous voulons afficher un bonjour, nous allons définir une action bonjour et aurevoir, et envoyer une variable à la vue, modifier comme suis :

class MessageController < ApplicationController
def bonjour
@contenu = 'Bonjour le monde'

end
def aurevoir
@contenu = 'Au revoir le monde'
end

end


Il faut maintenant modifier la vue en créant app/view/layouts/application.html.erb qui est globalement le template de notre application, tout ce qui va émaner des actions (ici bonjour et aurevoir) passera dans le yield :

Que va tu nous dire ?:<br/>
<%= yield %>


Créons ensuite les fichiers lié aux actions, comme dans RoR tout est convention, il suffit de créer un fichier du nom de notre action : app/view/message/bonjour.html.erb et app/view/message/aurevoir.html.erb

<%= @contenu %>

Lancer votre navigateur sur http://localhost:3000/message/bonjour et sur http://localhost:3000/message/aurevoir, la magie opére. Nous allons rajouter un menu afin de naviguer dans ces actions controller Message :

<%= render :partial => 'menu' %>

on pourrait mettre deux fois la meme chose mais on va faire un systéme d'include : un rendu d'un partiel (un block). Placer le code ci dessous dans bonjour.html.erb et aurevoir.html.erb. Puis créez un fichier app/view/message/_menu.html.erb (tout partiel commence par un _, la convention RoR saura qu'il faut allez chercher le partiel dans ce fichier) et placez y :

<br/>
<%= link_to 'Je dis bonjour', :controller => "salutation/bonjour" %>
<%= link_to 'Je dis au revoir', :controller => "salutation/aurevoir" %>

le link_to nous permet de créer automatiquement des a href (html) avec son contenu et le lien vers un controller.

Dans message controller nous allons rajouter une action par défaut sur l'index
(de manière a appeller uniquement http://localhost:3000/message) :
def index
@contenu = 'Faites votre choix'
end


il nous faut donc maintenant créer une vue dans app/view/message/index.html.erb, procédez comme ci dessus plaçant le code :

<%= @contenu %>

Enfin nous voulons rajouter un retour à l'accueil / dans le _menu.html.erb des vues il suffit d'ajouter ce lien qui appelle l'action index du controller message :
<%= link_to 'Acceuil', :controller => "message/index" %>

Amusez vous à passer des variables, créer des partiel, et à modifier le fichier app/view/layout/application.html.erb pour améliorer cet exemple. Nous verrons la prochainne fois comment interagir avec une base de données.