У меня есть действие, инициированное запросом AJAX, сгенерированным Ajax.InPlaceEditor
или InPlaceCollectionEditor
, например:
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...'
});
На другом конце действие содержит следующее:
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
После достижения любого из методов рендеринга сеанс истекает, и в следующий раз, когда пользователь отправляет запрос, Devise отправляет их для входа в систему на странице.
Даже если я освобождаю поле update_field от аутентификации (before_filter :authenticate_user!, :except => :update_field
) сеанс все еще сбрасывается.
Я посмотрел на ответ на очень похожий вопрос на Разработать сеанс, срок действия которого истекает при вызове .js [AJAX] , но это не решает мою конкретную проблему.
Есть идеи?