2.1) Types de templates :
- Embedded RuBy (Erb), dans les fichiers <nom_vue>.html.erb.
C'est le langage de template par défaut pour les Vues.
- Remote JavaSript (Rjs).
Ce langage est utilisé par défaut pour générer du Javascript distant.
- Builder.
Cette API permet de générer du XML à partir d'instructions Ruby.
- XHTML Abstraction Markup Language (Haml).
C'est un Langage de balisage utilisé pour décrire simplement le XHTML d'une page internet sans utiliser les traditionnelles lignes de code.
Haml est "whitespace active", et s'appuie sur l'espacement uniforme pour chaque niveau de tiret.
Tabulations et espaces doivent être maintenus constants tout au long du document.
Haml inclus aussi un équivalent : Sass, pour créer des feuilles de style CSS.
2.2) Embedded Ruby :
Un template Erb contient des blocs de code Ruby insérés dans du code HTML.
Un fichier de template peut être testé :
erb -vd <nom_template>.html.erb
2.3) Templates partials (fragments) :
Rails rends disponible une variable counter dans une fragment appellé par une collection. Cette variable commence par le nom du membre de la collection suivi de '_counter'.
Par exemple, si vous générez @produits, à l'intérieur du fragment vous pouvez utiliser produit_counter pour savoir combien de fois le fragment a été exécuté.
Cela ne marche bien sûr pas en conjonction avec l'option :as => :value.
2.4) Templates de séparation :
Avec l'instruction :
<%= render @produits, :spacer_template => "produit_ruler" %>
Rails générera le template fragment
_produit_ruler (sans lui passer aucune donnée) entre chaque paire de fragment
_produit.
2.5) Chemins de recherche des vues :
Le répertoire app/views et le répertoire par défaut de recherche des vues.
Chaque plugin / gem fournissant un engine ajoute au chemin de recherche son répertoire des vues.
Pour voir la liste des chemins de recherche :
ActionController::Base.view_paths
4.1) Formulaires
Les formulaires sont générés avec des assistants.
On accède à ces assistants avec l'instruction
form_for.
Cette méthode renvoie un objet de type :
ActionView::Helpers::FormBuilder
Exemple :
<% form_for(@categorie) do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :nom %><br />
<%= f.text_field :nom %>
</p>
<p>
<%= f.label :description %><br />
<%= f.text_area :description %>
</p>
<p>
<%= f.submit 'Update' %>
</p>
<% end %>
Cet objet est lié au
modèle courant, on peut retrouver ce modèle avec l'instruction :
f.object
4.2) Timezones
Dans config/environment.rb :
config.time_zone = 'Paris'
Dans la vue pour sélectionner une TZ pour l'utilisateur :
<%= time_zone_select 'user', 'time_zone', TZInfo::Timezone.all.sort, :model => TZInfo::Timezone %>
4.3) Champs date
- 1 année
- 2 mois
- 3 jour du mois
- 4 heure
- 5 minute
- 6 seconde
Ex :
date_livraison(<n>i)