Au travers des 3 prochains épisodes, nous allons vous montrer une excellente façon d'ajouter une aadministration à
votre site.
Ci-dessus une représentation d'ASCIIcasts avant qu'il n'y ait ses fonctions d'administration. Il n'y avait aucune
façon d'écrire les épisodes sans utiliser script/console
ou en modifiant manuellement la base de données.
Ce que nous aimerions faire, c'est ajouté une interface d'administration au site pour pouvoir faire nos changements via
le site.
L'ancienne façon de faire aurait été de générer un ensemble de fichier pour chaque épisode via le module
d'administration.
script/generate scaffold episode "admin/episodes"
Ceci fournira un ensemble de pages d'administration pour nous permettre de gérer nos épisodes.
Cette approche fonctionne mais elle n'est pas idéale vu que nous dupliquons des fonctionnalités. Nous avons déjà une
page qui liste nos épisodes : la page d'accueil du site. Au lieu d'écrire une section d'administration entièrement
séparée, nous pouvons placer nos liens d'administration dans le site public. (Bien sûr, nous ne voudrons que nos liens
ne soient visibles que par les administrateurs connectés !)
Implémenter les liens d'administration
Les résumés des épisodes dans la page d'index sont rendues via une vue partielle (partial).
<li>
<p class="episodeId"><%= episode.episode_id %></p>
<h3><%= link_to episode.title, episode_path(episode.identifier) %></h3>
<p class="summary"><%= episode.summary %></p>
<p class="tagList">Tags: <% episode.tags.each do |tag| %> <%= link_to tag.title, tag_path(tag.title) %> <% end %></p>
<p class="adminActions">
<%= link_to "Edit", edit_episode_path(episode) %>
<%= link_to "Destroy", episode_path(episode), :confirm => "Are you sure?", :method => :delete %>
</p>
</li>
La vue partielle episode
avec les liens edit
et destroy
qjoutés.
En bqs de la page d'index nous allons ajouter un lien pour créer un nouvel épisode :
<%= link_to “New”, new_episode_path %>
Maintenant, notre page d'index a les liens d'administration mais nous avons deux problèmes. D'abord, les liens ne
font puisque nous n'avons pas les actions new, edit et destroy pour le moment; Ensuite, les liens peuvent être vus par
n'importe qui. Le premier problème peut être résolu facilement en écrivant le code approprié pour les actions
new
, edit
, update
. Nous aborderons le deuxième problème dans le prochain épisode.