«объясняет, почему это работает.
я есть действие, вызванное запросом 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], но это не решает мою конкретную проблему.
Есть идеи?