jquery - Discuta la sesión que expira inmediatamente en.js llamada
ajax ruby-on-rails-3 (1)
A través de mucho ensayo y error, reduje el problema a la línea 5 a continuación. Por alguna razón, la respuesta .js está finalizando la sesión del usuario. Usando 3.0.4 y diseña 1.1.7 (y jQuery 1.5).
Además, @organization se está actualizando y Completed 200 OK se muestra en el registro, por lo que el usuario no sabe que está desconectado hasta que se intente la siguiente acción.
Cualquier ayuda y guía es muy apreciada.
*Controller*
1 def make_featured
2 @organization = Organization.find(params[:id])
3 @organization.is_featured ? @organization.update_attribute(:is_featured,"false") : @organization.update_attribute(:is_featured,"true")
4 respond_to do |format|
5 format.js {render :action => "update", :layout => false}
6 end
7 end
y
*update.js.haml*
$("#organization_" + "#{@organization.id}" ).replaceWith("#{ escape_javascript(render :partial => ''users/supplier_view'', :locals => {:organization => @organization}) }");
Muchas gracias a Brandon Martin del Devise Google Group por señalarme en la dirección correcta ...
Esto es resultado de una corrección de seguridad de Rails 3.0.4.
http://weblog.rubyonrails.org/2011/2/8/csrf-protection-bypass-in-ruby-on-rails
Después de una hora más o menos de trabajar en este blog, he aquí algunos consejos para otros ...
- Esto se ha solucionado en rails.js, por lo que no tienes que hackear, parchar o reinventar la rueda.
- Si está utilizando rails.js de fábrica, actualícelo -
rake rails:update
(creo, pero utilizo un archivo rails.js personalizado) - Si está utilizando un archivo personalizado rails.js, vaya a obtener el código fuente a la versión más nueva aquí: https://github.com/fermion/jquery-ujs/blob/master/src/rails.js
- coloque su ayudante
csrf_meta_tag
sobre sujavascript_include_tag
s
¡Espero que ayude!