He una acción provocada por una petición AJAX generada por Ajax.InPlaceEditor
o InPlaceCollectionEditor
así:+ Rails 3.0.4 finaliza la sesión después de la petición AJAX
new Ajax.InPlaceCollectionEditor('agent_email', 'inspections/<%= @inspection.id %>/update_field',
{
collection: [<% @agents.each do |agent| %>
'<%= agent.email %>',
<% end %>],
okText: 'Update',
cancelText: 'Never mind',
savingText: 'Updating...'
});
En el otro extremo, la acción contiene esto:
def update_field
--some code here--
if success
puts "stored change"
render :text => result
else
puts "did note change store"
render :text => inspection.errors.to_json, :status => 500
end
end
Una vez que se llega a alguno de los métodos de renderizado, la sesión expira y la próxima vez que el usuario envíe una solicitud, Devise los envía al inicio de sesión en la página.
Aunque estoy eximiendo update_field de la autenticación (before_filter :authenticate_user!, :except => :update_field
), la sesión todavía se está restableciendo.
He mirado la respuesta a una pregunta muy similar en Devise session immediately expiring on .js call [AJAX], pero no resuelve mi problema en particular.
¿Alguna idea?