Me he confundido un poco acerca de la idea de "representar" una "plantilla" debido a la forma en que un autor habla de ella en un libro que estoy leyendo .Rieles: ¿Qué significa en realidad "renderizar una plantilla"
Mi comprensión original de "renderizar una plantilla" era que significaba que Rails proporciona el contenido que se visualiza en la pantalla/se presenta al espectador (de la forma en que se representa un parcial) pero el libro que estoy la lectura parece estar usando el concepto de "renderizar una plantilla" para también significar algo más. Permíteme explicarte en contexto
Este libro (rieles 3 en acción) establece un diseño de página usando el archivo layouts/application.html.erb
convencional, y luego "cede" a diferentes páginas de vista, como views/tickets/show.html.erb
que agrega más contenido a la pantalla. eso es todo sencillo ..
En esta vista views/tickets/show.html.erb
, hay una representación de un parcial (que también es un concepto sencillo).
<div id='tags'><%= render @ticket.tags %></div>
Ahora dentro de este parcial existe, usando ajax, una llamada a un método de "eliminar" en el "tags_controller.rb" que está diseñado para permitir a los usuarios autorizados para desmontar una "etiqueta" de un "boleto" en nuestra aplicación simulada de administración de proyectos.
<% if can?(:tag, @ticket.project) || current_user.admin? %>
<%= link_to "x", remove_ticket_tag_path(@ticket, tag),
:remote => true,
:method => :delete,
:html => { :id => "delete-#{tag.name.parameterize}" } %>
<% end %>
Ahora aquí está la acción "eliminar" en el controlador de etiquetas (que disocia la etiqueta del boleto en la base de datos) ...
def remove
@ticket = Ticket.find(params[:ticket_id])
if can?(:tag, @ticket.project) || current_user.admin?
@tag = Tag.find(params[:id])
@ticket.tags -= [@tag]
@ticket.save
end
end
end
Al final de esta acción de eliminación, la autor originalmente incluyó render :nothing => true
, pero luego revisó la acción porque, como él dice, "vas a conseguir que presente una plantilla". Aquí es donde me confundo
La plantilla que se pone esta acción para hacer que es "remove.js.erb", que sólo tiene una línea de jQuery en su interior, cuya finalidad es eliminar la "etiqueta" de la página (es decir, la etiqueta que el usuario ve en la pantalla) ahora que se ha desasociado del ticket en la base de datos.
$('#tag-<%= @tag.name.parameterize %>').remove();
Cuando leí "la representación de una plantilla" espero que la aplicación que se va insertar contenido en la página, pero la plantilla dictada por la acción "eliminar" en el controlador sólo llama a una función jQuery que elimina un elemento de la página.
Si se "renderiza" una "plantilla", estoy esperando que se elimine otra plantilla (para dejar espacio para la nueva plantilla), o estoy esperando que el contenido se "renderice" de la manera que un parcial es renderizado ¿Puedes aclarar qué está sucediendo realmente cuando se "renderiza" una "plantilla" en la situación con el jquery en esta pregunta? ¿De verdad está poniendo una nueva página frente al usuario? (Esperaba que se renderizara algún tipo de página física)
+1 para una pregunta bien escrita – bragboy