Repaso el Tutorial de Rails de Michael Hartl y presiono un pequeño inconveniente en §12.2.5 donde se supone que debemos crear un botón de trabajo con Ajax. Sé que el código es correcto (terminé copiándolo directamente del libro y volviéndolo a escribir tres veces) y estoy verde. ¡Pero en realidad no funciona!El botón no se actualiza en Ajax - Rails Tutorial 3 en §12.2.5
A través de esta parte del tutorial estamos cambiando un botón de envío de formulario regular para trabajar con Ajax para que la página no se "actualice" (realmente, redirija a la misma página) y solo el botón y una correspondiente actualización del artículo de la barra lateral. El problema es que el botón no se recarga automáticamente al hacer clic como lo espero. Se vuelve a cargar al actualizar una página. Si deshabilito JS en mi navegador, revierte, como debería, a la versión HTML que desencadena una redirección y "actualiza" toda la página. Si te estás preguntando, intenté actualizar la página y probé Firefox, Safari, Chrome y Chrome en incógnito. Apagué y reinicié el servidor de rieles, spork y autotest. Y reescribí todo el código y luego copié todo el código del libro. Todavía perplejo.
Entonces, aunque la prueba es de color verde, tengo una función que no funciona correctamente. Tal vez hay algo que me falta y puedes ayudarme a encontrarlo? Tal vez me falta una joya relacionados javascreipt-, una joya Ajax ...
partes pertinentes del Código:
relationships_controller.erb:
class RelationshipsController < ApplicationController
before_filter :authenticate
def create
@user = User.find(params[:relationship][:followed_id])
current_user.follow!(@user)
respond_to do |format|
format.html { redirect_to @user }
format.js
end
final
def destroy
@user = Relationship.find(params[:id]).followed
current_user.unfollow!(@user)
respond_to do |format|
format.html { redirect_to @user }
format.js
end
end
end
_follow.html.erb:
<% = form_for (current_user.relationships. compilación (: seguido_id => @ usuario.id), : remoto => verdadero) do | f | %> <% = f.hidden_field: followed_id%>
<% = f.submit "seguir" %> extremo <%%>
_unfollow.html.erb:
<%= form_for(current_user.relationships.find_by_followed_id(@user),
:html => { :method => :delete },
:remote => true) do |f| %>
<% end%>
create.js.erb
$("follow_form").update("<%= escape_javascript(render('users/unfollow')) %>")
$("followers").update('<%= "#{@user.followers.count} followers" %>')
destroy.js.erb
$("follow_form").update("<%= escape_javascript(render('users/follow')) %>")
$("followers").update('<%= "#{@user.followers.count} followers" %>')
También se aseguró de que esta línea está incluida en el application.html.erb
<%= javascript_include_tag :defaults %>
Si hay algo más que necesita para evaluar la situación , por favor pregunta y responderé con una actualización.
TIA
utilizar una herramienta como Firebug (con firefox) o las herramientas de desarrollador que vienen con Chrome para obtener una mejor visión de lo que está sucediendo. Por ejemplo, si usa chrome en un golpe de mac command-option-i para abrir las herramientas de desarrollador. haga clic en la pestaña 'consola' y luego intente hacer clic en lo que active su ajax. si hay errores js, los verá aquí. en el pasado, descubrí que mis solicitudes de ajax no se formateaban correctamente, lo que causaba que js arrojara errores. Estaba buscando problemas en los rieles, pero el problema estaba en la respuesta del Ajax y el navegador estaba atrapándolo, no en los rieles (por lo que no aparecía en mis registros) – Dty
Humbledaisy, ¿fue capaz de resolverlo? Tengo el mismo problema aquí: el resultado devuelto por Rails (que confirmé usando un sniffer http) no desencadena el cambio, pero si pega el código en el depurador, funciona. Estoy confundido. – chesterbr