У меня действительно странная проблема с Devise. У меня есть настроенный маршрут, который принимает и получает и отправляет запросы. При получении, он показывает форму, на почте, он представляет его.
Когда я отправляю сообщение XHR на маршрут, когда он туда попадает, он сообщает, что я не вошел в систему, и отправляет мне 401 неавторизованный. После этого я должен войти в систему, а затем я могу попробовать еще раз.
Я пытался выяснить это часами, все, что я смог понять, это то, что мой метод контроллера не вызывается. Я вставил свой собственный пользовательский аутентификатор перед фильтром, и он только подтвердил, что к тому времени, когда мое приложение rails вызывается, пользователь больше не входит в систему.
Кроме того, если я открою форму, но не отправлю ее, я смогу продолжить как обычно. Где-то в этом XHR он создает устройство, чтобы выйти из системы.
Если у вас есть идеи, пожалуйста, помогите, я понятия не имею, что происходит сейчас ...
Спасибо
-Скотт
РЕДАКТИРОВАТЬ: Добавление соответствующих частей кода
routes.rb
match 'projects/:p/filebox' => 'projects#show', :via => ["get","post"], :as => 'project_filebox'
projects_controller.rb
before_filter :authenticate_user! # <--- By the time this gets called, the user is logged out
def show
# ^^^^ Doesnt get called. Logger shows that it recognized route though
logger.debug "-----------projects#show"
logger.debug "Current user logged in:"+user_signed_in?.to_s
отправляемая форма
<form class="upload" action="<%= project_filebox_path(@project) %>?n=7&cType=<%= cType %>&fid=<%= fid %>" method="post" enctype="multipart/form-data">
<input type="file" name="file" multiple/>
<button>Upload</button>
<div>Add / Drag Files To Upload</div>
</form>
Javascript, который загружает XHR
formDataUpload = function (files, xhr, settings) {
var formData = new FormData(),
i;
$.each(getFormData(settings), function (index, field) {
formData.append(field.name, field.value);
});
for (i = 0; i < files.length; i += 1) {
formData.append(settings.fieldName, files[i]);
}
xhr.send(formData);
}
Если я пропустил какой-то соответствующий кусок кода, дайте мне знать