En los próximos tres episodios mostraremos como agregar administración a su sitio web.
Arriba vemos una captura de pantalla de una versión inicial del sitio ASCIIcasts, de antes que tuviera funciones de administración escritas. No existía forma de editar o agregar episodios excepto utilizando script/console
o editando manualmente la base de datos. Lo que quisiéramos hacer es agregar una sección admin al sitio para poder realizar cambios a los episodios a través del sitio.
La 'antigua' forma de hacerlo hubiera sido generar un scaffold para los episodios dentro de un módulo admin.
script/generate scaffold episode "admin/episodes"
Esto nos hubiera dado un set de páginas administrativas que nos permitieran administrar nuestros episodios.
Esta idea funciona, pero no es la ideal ya que estaríamos duplicando funcionalidad. Ya tenemos una página que nos muestra un listado de nuestros episodios: la página principal de nuestro sitio. En vez de escribir una sección administrativa completamente por separado, podríamos ubicar nuestros links de administración en una línea en el sitio público (Solamente vamos a querer que nuestros links administrativos sean visibles por los administradores logueados).
Implementación de los links de administración
Los resúmenes de los episodios en la página index son creados dentro de un partial. Vamos a editar ese partial para agregar los links de edición (edit) y borrado (destroy).
<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>
El partial del episodio con los links destroy
y edit
.
En la parte de abajo de la página index vamos a agregar un link para crear un nuevo episodio:
<%= link_to “New”, new_episode_path %>
Ahora nuestra página index tiene los links de administración, pero tenemos dos problemas. Primero, los links no hacen nada, ya que todavía no hemos escrito las acciones new, edit o destroy. Segundo, los links pueden ser vistos por cualquier persona. El primer problema es de fácil solución y se resuelve escribiendo el código apropiado para las acciones new
, edit
, update
, etc. y veremos la solución al segundo problema en el siguiente episodio.