¿Cómo debo ir sobre la integración de AJAX?

Tengo este código realmente desordenado en mi archivo update.js.erb que reside en mi directorio de videos. Se llama cada vez que agrego un nuevo comment_title:

$(".comments_div").html(' \ <div class ="comment_column_"> \  \ <div id = "comment_title_" class="comment_title"> \  \  :delete, :remote => true, :class => "comment_title_delete" %> \ 
\ \
\ "comment_image" %> \
\
\ \ "normal" %> \ \ \
\ \
    \
  • ago
  • \ \
  • @video, :id => comment), :method => :delete, :class => "normal" %>
  • \ \
\
\
\
\ \
\ \ ');

También tengo un archivo destroy.js.erb que reside en mi directorio comment_title (porque el método destroy está en el controlador comment_titles) y se llama cuando borro el título de un comentario. Quiero tener el mismo código que el anterior en este archivo de destrucción, de modo que cuando elimino un comentario_título, el código html se actualice. El problema es que @video no está definido en mi directorio comment_title, por lo que no puedo copiar y pegar el código de update.js.erb a destroy.js.erb. Entonces, mi pregunta es ¿cuál sería la mejor manera de tener la llamada JS anterior integrada en mi archivo de destrucción?

Realmente no necesitas ningún javascript para destruir. Cuando haces clic en Destruir solo puedes quitar el div. y no necesitarás actualizar nada.

Bueno, en realidad sí necesita javascript pero no a través del controlador, esto se puede hacer en el lado del cliente a menos que realmente necesite esperar una respuesta.

Actualizar

Esto supone que está utilizando REST.

Ruby array para recorrer e identificar comentarios para destruir enlaces

 <% @video.comment_titles.each do |ct| %> <%= link_to "Destroy comment", ct, :method => :delete, :confirm => "Are you sure?", :class => 'destroy' %> <% end %> 

jQuery para procesar el enlace de destruir:

 $(document).ready(function() { $('a.destroy').live('click', function(event) { if ( confirm("Are you sure you want to delete this comment?") ) $.ajax({ url: this.href.replace('/delete', ''), type: 'post', dataType: 'script', data: { '_method': 'delete' }, success: function() { // the item has been deleted // might want to remove it from the interface // or redirect or reload by setting window.location } }); return false; }); }) 

Usted comenta controlador:

 def destroy @comment = Comment.find( params[:id] ) @comment.destroy respond_to do |format| format.html { redirect_to :back } format.js { render :nothing => true } end end 

Déjame saber si obtienes algún error. No estoy muy seguro de tus rutas, así que es difícil adivinar todo.

Intereting Posts