#19 Where Administration Goes
Nei prossimi tre episodi vedremo un bel metodo per aggiungere la parte amministrativa al vostro sito.
Qui sopra c’è la schermata di una delle prime versioni del sito ASCIIcasts, prima che avesse le funzioni amministrative. Non c’era modo di modificare o aggiungere episodi, se non utilizzando la script/console
o modificando a mano il database. Ciò che vorremmo fare è aggiungere una sezione amministrativa al sito web in modo tale da poter fare modifiche agli episodi direttamente sul sito.
Per farlo alla vecchia maniera, si avrebbe dovuto generare uno scaffold per gli episodi all’interno di un module admin.
script/generate scaffold episode "admin/episodes"
Questo avrebbe fornito un insieme di pagine amministrative che ci avrebbe permesso di gestire gli episodi.
Questo approccio funziona, ma non è l’ideale poichè infrange il principio DRY: stiamo duplicando funzionalità. Abbiamoi già una pagina perfettamente funzionante che mostrano tutti gli episodi: la home page del nostro sito. Anzichè scrivere una sezione amministrativa completamente separata, potremmo decidere di piazzare dei link amministrativi direttamente sulle stessa pagine del sito pubblico. (Naturalmente permetteremo la visibilità di questi link ai soli amministratori!)
Implementare i link amministrativi
I brevi riassunti degli episodi nella pagina index sono visualizzati a partire da un partial. Modifichiamo ora quel partial per aggiungere i link di modifica e cancellazione.
<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>
Il partial degli episode
con l’aggiunta dei collegamenti edit
e destroy
.
In fondo alla pagina index page aggiungiamo un link per creare un nuovo episodio:
<%= link_to “New”, new_episode_path %>
Ora la nostra pagina di index ha i collegamenti amministrativi, ma abbiamo due problemi. Innanzitutto, i collegamenti non fanno nulla piochè non ne abbiamo ancora scritto le action corrispondenti new, edit e destroy; in secondo luogo i link possono essere visti (e cliccati) da tutti. Il primo problema è risolto semplicemente implementando le action di new
, edit
, update
etc., e discuteremo di questo punto nel prossimo episodio.