jquery ajax ruby-on-rails-3 devise

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 su javascript_include_tag s

¡Espero que ayude!