【问题标题】:Rails uploads for new objectRails 上传新对象
【发布时间】:2016-08-16 08:19:40
【问题描述】:

创建新记录时(rails 默认的新操作),对象 id 为 nil b/c,它不会持久保存在数据库中。

上传对象时,它们通常与一个 ID 相关联(使用回形针)。

当我的用户点击new,并且我想为ajax 上传提供一个dropzone.js 区域时,我如何将该图像/文件绑定到没有id 的post 对象?

如果他们丢弃或退出浏览器,我会孤立临时图像/文件...

我在为新记录连接对象上传之间的点时遇到问题。

有人可以帮我解决这个问题的控制器逻辑吗?在创建对象之后,我可以很容易地在一个单独的操作中完成它,但不是在创建之前。

【问题讨论】:

    标签: ruby-on-rails file-upload paperclip


    【解决方案1】:

    我制作了一个 Gem 来解决这类问题。 它可以在回形针上运行,并且不具有侵入性。要启用该功能,您需要将回形针的has_attached_file 替换为has_attached_upload

    使用Rails Pallet 宝石... 首先,您需要使用file 属性将文件上传到执行POST /uploads 的服务器。响应将为您提供与该文件相关的标识符。 然后,发送标识符,您可以更新自己的记录。之后,gem 会将文件复制到您的记录中。

    这样,您可以在保存记录之前上传文件

    您可以在 gem 的 README 上查看完整示例

    【讨论】:

    • 太棒了。我会调查的。作为回形针的替代品,你能说出来重新归档吗?
    • 这个rails 5也兼容吗?
    • 这是回形针的补充,而不是替代。仅在您需要的模型中将has_attached_file 替换为has_attached_upload。我没有在 Rails 5 中测试它,只有 Rails 4.2。
    • 我刚刚为 rails 5 分叉并更改了 gemspec。刚刚为 /uploads 获得了一个 404。我需要在 routes.rb 中添加帖子吗?
    • 您需要运行安装程序rails generate rails_pallet:install来挂载gem并获取端点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-02
    • 1970-01-01
    相关资源
    最近更新 更多