我遇到了一个严重的问题,在没有找到解决方案的情况下搜索了很多个小时。
我有一个使用Ruby of Rails和paperclip的后端服务器来保存图像。
图片上传在浏览器中正常工作,POST到/ pictures
但是当我尝试使用RestKit(iOS)的多部分请求将其上传到/pictures.json时,我得到了406。
当在服务器端创建图像(图片对象)时,奖励(奖励对象)与其相关联。这个奖励对象是我期待的JSON响应。
这是Objective-C代码:
NSMutableURLRequest* uploadRequest = [self.objectManager multipartFormRequestWithObject:nil method:RKRequestMethodPOST
path:@"/pictures.json"
parameters:nil
constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData
appendPartWithFileData:UIImagePNGRepresentation(socialReward.image)
name:@"picture[pict]"
fileName:imageName
mimeType:@"image/png"];
}];
这是控制器:
@picture = Picture.create( params[:picture] )
respond_to do |format|
format.html {
redirect_to @picture.reward
}
format.js {
render :json => @picture.reward.to_json(:include => :picture)
}
end
禁用CSRF检查。
使用Wireshark比较来自浏览器和iOS的请求时,它们非常相似。
提前感谢您的帮助。
答案 0 :(得分:1)
问题出在RoR上,respond_to
你应该使用format.json
,而不是format.js
。