问题标签 [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.
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。我们可以这样做吗?
javascript - 尝试通过 AJAX 提交 rails 表单时出现 400 错误
这是设置:
- 很简单的表格,只是一个
name
字段,加上两个 ActiveStorage 附件字段square_image
和landscape_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)
ruby-on-rails - ActiveStorage:附加记录退货?确实如此,但 blob 为零。如何删除“幽灵”附件?这怎么发生的?
这是在生产应用程序中。我怀疑在文件上传(直接上传到 S3)期间发生了一些事情,并且 blob 没有正确创建。
现在应用程序在某些情况下会崩溃,我正在尝试删除“幽灵”附件而不删除父记录。这可能吗?
ruby-on-rails - 在 ActiveStorage 中保存之前重命名文件 - Rails 5.2
我试图在保存到 ActiveStorage 之前重命名用户上传的文件,但我似乎没有找到任何文档来做到这一点。希望有人成功地做到了,并有代码示例可以分享。
谢谢你。
ruby-on-rails - 通过自定义控制器操作将 ActiveStorage 文件发送给用户
我知道 ActiveStorageurl_for(user.avatar)
方法。例子:
这很棒,但似乎没有围绕它建立的授权。知道此链接的任何人都可以下载此文档。
过去当我使用回形针时,我有一个指向自定义控制器操作的链接。该自定义控制器操作进行了授权,如果一切正常,那么我曾经send_file
将文件发送给用户。是这样的:
如何使用 active_storage 做到这一点?我所做的只是url_for
完全不授权用户的实现。
我正在专门查看有关 ActiveStorage 的 Rails 指南的下载文件部分。
相关示例代码:
这错误并说:
无法读取文件
我也尝试过这个:
这返回了错误:
字符串包含空字节
我也尝试过这个:
这返回了错误:
BooksController#deliver_it 缺少此请求的模板
我也试过这个:
这错误并说:
没有将 ActiveStorage::Blob 隐式转换为 String
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
但在我的应用程序中看不到它?
我错过了什么?
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
呢?表中的值并未显示此key
值active_storage_blobs
。
rails-activestorage - Rails 5.2 Active Storage 清除/删除附件不会删除 Blob 或附件记录
我正在使用 rails 5.2,并且正在尝试使用 Amazon S3 设置 Active Storage。我的应用程序可以完全访问 S3,并且可以将avatar
图像附加到user
. 但是当我尝试删除头像时,我遇到了以下问题:
然后,当我检查存储桶时,该文件实际上已被删除,但在数据库中查找,两者都存在Blob
,并且Attachment
记录仍然存在。
任何想法为什么会发生这种情况?
编辑 我根据接受的答案的建议对我的 IAM 权限进行了一些更新。这些是我更新的项目:
- 将策略附加到我的 IAM 用户,而不是我的 s3 存储桶。
- 列出了所有必需的操作。
- 在资源字段中添加整个存储桶,而不仅仅是所有对象。
最后我的策略 json 看起来像这样:
ruby-on-rails - 获取磁盘上 ActiveStorage 文件的路径
我需要获取磁盘上正在使用的文件的路径ActiveStorage
。该文件存储在本地。
当我使用回形针时,我使用了path
返回完整路径的附件上的方法。
例子:
在查看Active Storage Docs时,它看起来rails_blob_path
可以解决问题。在查看了它返回的内容之后,它没有提供文档的路径。因此,它返回此错误:
没有这样的文件或目录@rb_sysopen -
背景
我需要文档的路径,因为我正在使用combine_pdf gem 将多个 pdf 组合成一个 pdf。
对于回形针的实现,我遍历了所选 pdf 附件的 full_paths 并将load
它们放入组合的 pdf 中:
ruby-on-rails - 活动存储:表单重新显示时保留/缓存上传文件的最佳实践
使用 Active Storage 上传文件时,当文件完成上传并重新显示表单时,例如当该表单的验证由于某种原因失败时,文件就消失了。
有没有办法在表单重新显示之间缓存或保留它?Shrine 为此目的提供了一个不错的插件,我正在为 Active Storage 寻找类似的东西。