Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用曲别针在rails中创建对象时的AJAX文件上载_Ruby On Rails_Ajax_Activerecord_File Upload_Paperclip - Fatal编程技术网

Ruby on rails 使用曲别针在rails中创建对象时的AJAX文件上载

Ruby on rails 使用曲别针在rails中创建对象时的AJAX文件上载,ruby-on-rails,ajax,activerecord,file-upload,paperclip,Ruby On Rails,Ajax,Activerecord,File Upload,Paperclip,我有一个头痛的问题,我似乎找不到一个简单的解决办法 我有几个模型,每个模型都有一个图像附件,属于一个用户。我已经做了一个非常好的ajax文件上传和图像裁剪表单,但是有一个问题。当我编辑数据库中已有的对象时,一切都正常,但当我在创建新对象时上载文件时,一切都不正常。问题是,为了能够上传和保存图像,对象必须已经存在于数据库中。我已经找到了解决这个问题的两种可能的方法,但没有一种能正常工作 第一个是在新操作中在数据库中创建对象,并重定向到编辑操作。优点是这是一个非常简单的修复。缺点是,即使用户取消或从

我有一个头痛的问题,我似乎找不到一个简单的解决办法

我有几个模型,每个模型都有一个图像附件,属于一个用户。我已经做了一个非常好的ajax文件上传和图像裁剪表单,但是有一个问题。当我编辑数据库中已有的对象时,一切都正常,但当我在创建新对象时上载文件时,一切都不正常。问题是,为了能够上传和保存图像,对象必须已经存在于数据库中。我已经找到了解决这个问题的两种可能的方法,但没有一种能正常工作

第一个是在新操作中在数据库中创建对象,并重定向到编辑操作。优点是这是一个非常简单的修复。缺点是,即使用户取消或从未提交表单,对象也会与以前创建的对象一起显示在列表中,这非常令人困惑

第二种可能的解决方案是将模型的附着字段提升到单独的模型。在创建时,我只需要创建一个附件对象。如果用户取消,它将使附件处于孤立状态,但这可能没关系,因为孤立可以定期清除。问题是,我找不到一种方法来阻止用户劫持孤立图像,或者任何其他图像。除非我不能解决这个问题,否则我会陷入困境

我没有主意了,在这方面我真的需要一些帮助

谢谢,戈迪塞莫

编辑:


我可能不清楚。在我的表单中,可以上传图像。在提交表单之前,图像会立即用javascript上传到服务器。原因是我想允许用户裁剪图像。使用现有对象并没有问题,但在创建新对象时会出现问题,正如我之前尝试解释的那样。

我从来都不需要将模型放在数据库中才能使用回形针

不过,有一件事你可以尝试一下。我不知道你们的模型叫什么,但假设用户有一个图像。创建新表单,以便所有用户字段都在params[:user]变量中传递,但随后将图像上载文件与params[:user]分开,比如params[:my_image]


然后在控制器中验证并保存用户,然后在user.save之后附加图像。

我现在用完全不同的方法解决了这个问题。我没有考虑数据库、对象和模型,而是使用文件系统和临时文件来解决它。上传图像后,它会被回形针处理,然后我将生成的图像移动到一个我可以控制它们的文件夹中


我的解决方案基于一篇非常好的文章,你可以在这里找到,

我可能不清楚AJAX上传的意思。图像会立即提交,而不会真正提交表单。这就是我的问题的原因。我更新了问题以更好地解释这一点。无论如何,谢谢。这是更新的链接