问题标签 [rails-activestorage]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
510 浏览

ruby-on-rails - 使用没有 ActionParameters 的 Active Storage 创建记录

我尝试使用图像创建记录,使用创建的directyl,并在模型中

Banner.create(start_at: Time.now, location: 'site', image_fr: File.new("#{Rails.root}/db/seeds/images/banners/pdfs/gift_voucher_bottom.png", 'r'), image_de: File.new("#{Rails.root}/db/seeds/images/banners/pdfs/gift_voucher_bottom.png", 'r'), 宽度: 595, 高度: nil )

由于验证,我必须在创建时执行,而不是在之后使用 .attach。我们可以这样做吗?

0 投票
1 回答
158 浏览

javascript - 尝试通过 AJAX 提交 rails 表单时出现 400 错误

这是设置:

  • 很简单的表格,只是一个name字段,加上两个 ActiveStorage 附件字段square_imagelandscape_image.
  • 两个字段都已direct_upload: true设置。
  • 如果填写了所有表单字段,包括文件,则提交工作完全正确,没问题。
  • 但是,如果您只填写该name字段,将任何文件字段留空,我invalid_request每次都会得到一个。

这只发生在 Safari 中

来自 nginx 的调试日志显示client prematurely closed stream: only 548 out of 953 bytes of request body received

好像不是 nginx 的问题,因为我通过本地得到了类似的体验pow(连接只是挂了很长时间,大概是因为pow正在等待永远不会到达的数据)。

有没有其他人经历过这个,或者对如何调试有任何想法?我不知道从这里去哪里。

  • 导轨 5.2.0
  • Safari 11.1 (13605.1.33.1.2)
0 投票
1 回答
1176 浏览

ruby-on-rails - ActiveStorage:附加记录退货?确实如此,但 blob 为零。如何删除“幽灵”附件?这怎么发生的?

这是在生产应用程序中。我怀疑在文件上传(直接上传到 S3)期间发生了一些事情,并且 blob 没有正确创建。

现在应用程序在某些情况下会崩溃,我正在尝试删除“幽灵”附件而不删除父记录。这可能吗?

0 投票
2 回答
1273 浏览

ruby-on-rails - 在 ActiveStorage 中保存之前重命名文件 - Rails 5.2

我试图在保存到 ActiveStorage 之前重命名用户上传的文件,但我似乎没有找到任何文档来做到这一点。希望有人成功地做到了,并有代码示例可以分享。

谢谢你。

0 投票
3 回答
4498 浏览

ruby-on-rails - 通过自定义控制器操作将 ActiveStorage 文件发送给用户

我知道 ActiveStorageurl_for(user.avatar)方法。例子:

这很棒,但似乎没有围绕它建立的授权。知道此链接的任何人都可以下载此文档。

过去当我使用回形针时,我有一个指向自定义控制器操作的链接。该自定义控制器操作进行了授权,如果一切正常,那么我曾经send_file将文件发送给用户。是这样的:

如何使用 active_storage 做到这一点?我所做的只是url_for完全不授权用户的实现。

我正在专门查看有关 ActiveStorage 的 Rails 指南的下载文件部分。

相关示例代码:

这错误并说:

无法读取文件

我也尝试过这个:

这返回了错误:

字符串包含空字节

我也尝试过这个:

这返回了错误:

BooksController#deliver_it 缺少此请求的模板

我也试过这个:

这错误并说:

没有将 ActiveStorage::Blob 隐式转换为 String

0 投票
5 回答
7623 浏览

ruby-on-rails - 活动存储 Rails 5.2 的 Blob 错误

我刚刚升级了 5.1.4。应用程序到 5.2,并试图将 Paperclip 换成 ActiveStorage。在尝试使用图像更新现有记录时,我收到以下错误:

无法自动加载常量 ActiveStorage::Blob::Analyzable,预期 /Users/Simon/.rvm/gems/ruby-2.4.0/gems/activestorage-5.2.0/app/models/active_storage/blob/analyzable.rb 来定义它

在我的模型中:

在我的控制器中:

...

...

在 storage.yml 中:

我通过设置访问密钥rails credentials:edit

在 development.rb 中:

在我看来:

我一直在阅读http://edgeapi.rubyonrails.org/classes/ActiveStorage/Blob/Analyzable.html但这对我来说没有太大意义。

该错误使我在以下位置查找文件,app/models/active_storage/blob/analyzable.rb但在我的应用程序中看不到它?

我错过了什么?

0 投票
1 回答
1384 浏览

ruby-on-rails - VueJS 中 Rails 主动存储博客的路径

我在使用 AWS S3 托管图像的 Rails 5.2 应用程序中使用 Active Storage。我可以<%= image_tag @gin.pic %>在 HTML 视图中使用 ok,但我使用的是从 Rails API 驱动的单独的 VueJS 前端应用程序,我在文件路径上苦苦挣扎,只是得到了 404 的负载。

我最初尝试<img v-bind:src="gin.pic" alt="" />没有运气,所以也尝试了以下替代方案:

组件/Gins.vue

以上都不起作用。

我查看了 HTML 应用程序的源代码,它给出的 URL 为:

这当然会重定向到 S3 中的 URL。

但是我在哪里得到参数blobs呢?表中的值并未显示此keyactive_storage_blobs

0 投票
1 回答
2340 浏览

rails-activestorage - Rails 5.2 Active Storage 清除/删除附件不会删除 Blob 或附件记录

我正在使用 rails 5.2,并且正在尝试使用 Amazon S3 设置 Active Storage。我的应用程序可以完全访问 S3,并且可以将avatar图像附加到user. 但是当我尝试删除头像时,我遇到了以下问题:

然后,当我检查存储桶时,该文件实际上已被删除,但在数据库中查找,两者都存在Blob,并且Attachment记录仍然存在。

任何想法为什么会发生这种情况?

编辑 我根据接受的答案的建议对我的 IAM 权限进行了一些更新。这些是我更新的项目:

  • 将策略附加到我的 IAM 用户,而不是我的 s3 存储桶。
  • 列出了所有必需的操作。
  • 在资源字段中添加整个存储桶,而不仅仅是所有对象。

最后我的策略 json 看起来像这样:

0 投票
4 回答
27793 浏览

ruby-on-rails - 获取磁盘上 ActiveStorage 文件的路径

我需要获取磁盘上正在使用的文件的路径ActiveStorage。该文件存储在本地。

当我使用回形针时,我使用了path返回完整路径的附件上的方法。

例子:

在查看Active Storage Docs时,它看起来rails_blob_path可以解决问题。在查看了它返回的内容之后,它没有提供文档的路径。因此,它返回此错误:

没有这样的文件或目录@rb_sysopen -

背景

我需要文档的路径,因为我正在使用combine_pdf gem 将多个 pdf 组合成一个 pdf。

对于回形针的实现,我遍历了所选 pdf 附件的 full_paths 并将load它们放入组合的 pdf 中:

0 投票
2 回答
3941 浏览

ruby-on-rails - 活动存储:表单重新显示时保留/缓存上传文件的最佳实践

使用 Active Storage 上传文件时,当文件完成上传并重新显示表单时,例如当该表单的验证由于某种原因失败时,文件就消失了。

有没有办法在表单重新显示之间缓存或保留它?Shrine 为此目的提供了一个不错的插件,我正在为 Active Storage 寻找类似的东西。