我有一个非常奇怪的问题与Devise.我设置了一个路由,接受get和post请求.在一个get,它显示表单,在帖子,它提交它.
当我发个帖子XHR的路线,当它到达那里它告诉我,我没有登陆,并给我发送401未授权.之后,我必须登录,然后我可以再试一次.
我一直在试图弄清楚这一点了几个小时,所有的我已经能够搞清楚的是,我的控制器方法是没有得到调用.我把我自己的自定义过滤器AUTH之前,它只是证实了我的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>
正在上传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); }
如果我错过了一些相关代码让我知道