我和迪维斯有一个非常奇怪的问题。我设置了一个同时接受获取和发布请求的路由。收到后,它会显示表格,在帖子上,它会提交表格。
当我向路由发送一个post XHR时,当它到达那里时,它会告诉我没有登录,并向我发送一个未经授权的401。之后我必须登录,然后我可以再试一次。
我已经想了好几个小时了,我所能想的只是我的控制器方法没有被调用。我在过滤器之前放入了自己的自定义auth,它只是确认,当我的rails应用程序被调用时,用户不再登录。
此外,如果我打开表格,但不提交,我可以继续正常工作。在XHR的某个地方,它正在设计将我注销。
如果你有什么想法,请帮忙,我不知道现在发生了什么。。。
谢谢
-斯科特
编辑:添加相关代码
路线.rb
match projects/:p/filebox => projects#show , :via => ["get","post"], :as => project_filebox
项目_控制器.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>
正在上载XHR的Javascript
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);
}
如果我错过了一些相关的代码,请告诉我