文件上传无照片参数问题
File Upload Nil Photo Params Issue
我有一个rails 4应用程序,我使用jQuery文件上传发送请求到载波。我的代码看起来像:
<input name='photo[image]' type='file' data-url='photos/create' multiple="true" class='fileupload'/>
和jquery:
$('.fileupload').fileupload({
dataType: 'json',
done: function (e, data) {
$.each(data.result.files, function (index, file) {
alert(file.name);
});
}
});
和我在照片控制器中的创建动作:
def create
@photo = Photo.new(photo_params)
respond_to do |format|
if @photo.save
format.json { render json: @photo }
else
format.json { render json: @photo.errors, status: :unprocessable_entity }
end
end
end
private
def photo_params
params.require(:photo).permit!
end
and my Photo model:
class Photo < ActiveRecord::Base
mount_uploader :image, ImageUploader
end
当我创建一张照片时,载波正确地创建了一张图像(在公共/上传目录中),但由于某种原因,我的jQuery出现了错误:
Uncaught TypeError: Cannot read property 'length' of undefined
我不确定是什么引起的?
我应该留下评论,但是我没有足够的声誉,所以我道歉。
我认为你只需要使用数据。文件而不是data.result.files
这样的$('.fileupload').fileupload({
dataType: 'json',
done: function (e, data) {
$.each(data.files, function (index, file) {
alert(file.name);
});
}
});
在我看来,您响应的json没有done
回调期望的结构。由于它在data.result.files
上调用each
,我认为响应需要更结构化如下:
render json: {result: { files: [@photo] } }
.
你也可以通过在回调
中将返回的数据记录到javascript控制台来调试它 done: function(e, data) { console.log(data) }
data
对象的结构显示results
字段参数为一个对象,包含各种与文件无关的字段;所以data.result.files
的结果是错误的.each()
使用如下:
$.each(data.files, function (index, file) {
alert(file.name);
});
工作演示(删除了服务器端代码来捕获对象,只需修改上面的代码)
首先试着探索你的参数。文件可能被保存到tmp作为临时文件,需要额外的操作来移动/重命名
相关文章:
- 参数变量出现ngTable指令问题
- 我的jQuery插件参数没有正确启动,遇到了问题
- 简单的ES6承诺问题-交换解决和拒绝参数
- 列表.js参数问题
- 使用函数作为参数 - 问题
- Javascript setTimeout参数问题(I'm使用匿名函数版本)
- setTimeout传递参数问题
- Javascript传入参数问题
- 点击时出现Javascript参数问题
- IE8中变量对象属性的无效参数问题
- 文件上传无照片参数问题
- JavaScript函数参数问题
- Angular指令参数问题
- Javascript函数调用不当(参数问题)
- 参数问题javascript
- Javascript数组参数问题
- JavaScript 传递参数问题
- Meteor: iron route's url参数问题
- 使用'参数调用javascript函数'使用收到的'参数'问题
- 网页速度url参数问题