问题标签 [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 投票
2 回答
7972 浏览

ruby-on-rails - Rails 5.2 Active Storage 添加自定义属性

我有一个带附件的模型:

当我附加并保存图像时,我还想保存一个附加的自定义属性 - display_order(整数)和附加的图像。我想用它对附加的图像进行排序,并按照我在这个自定义属性中指定的顺序显示它们。我已经查看了#attach方法和ActiveStorage::Blob模型的 ActiveStorage 源代码,但看起来没有内置方法可以传递一些自定义元数据。

我想知道,用 ActiveStorage 解决这个问题的惯用方法是什么?过去,我通常只display_order在 ActiveRecord 模型中添加一个代表我的附件的属性,然后简单地将其与.order(display_order: :asc)查询一起使用。

0 投票
5 回答
34226 浏览

ruby-on-rails - Rails 5.2 Active Storage 清除/删除附件

所以我使用 Active Storage 上传多个附加到 Collection 模型的图像。一切正常,除非我试图从集合中清除/删除单个附件。

问题:由于某种原因,每当我加载集合的显示页面时,我的所有图像都会立即被清除/删除。当然,我只想在单击链接时删除文件。有谁知道如何解决这个问题?

我的收藏展示视图:

我已阅读有关 http://edgeguides.rubyonrails.org/active_storage_overview.html#removing-files的文档 (参见第 4 段)

但遗憾的是,这并没有提供任何关于如何具体使用 purge 或 purge_later 方法的信息。

编辑 目前将我的代码更改为此(遗憾的是仍然不起作用):

在我的 collections_controller.rb 中有这个

在我尝试删除附加图像后,这给了我这个错误:

在(尝试)删除图像后返回集合显示时出现错误。

服务器日志:

输出rake routes

我的路线.rb:

0 投票
3 回答
6607 浏览

ruby-on-rails - 在模型中生成图像 URL - ActiveStorage

我有一个使用 ActiveStorage (Rails 5.2.0.rc2) 的简单模型,模型如下所示:

然后在to_builder我想显示图像的永久 URL 的方法中,我正在尝试Rails.application.routes.url_helpers.url_for(image)按照 rails 指南(http://edgeguides.rubyonrails.org/active_storage_overview.html#linking-to-files)中的建议,但它会引发这个错误:

Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true

在我的应用程序中,我已经有了该default_url_options[:host]集合,但它不起作用,甚至写入url_for(image, host: 'www.example.com')url_for(image, only_path: true)不起作用,因为它引发了另一个错误:wrong number of arguments (given 2, expected 1)

使用 activestorage 在模型范围内显示永久 URL 的正确方法是什么?

0 投票
2 回答
2049 浏览

ruby-on-rails - has_one_attached 时的默认附件

我有一个带有 , 的用户模型has_one_attached :avatar,使用ActiveStorage. Avatar 是可选的,但是当它不存在时,我想显示一个默认值。我将所有附件存储在 Amazon S3 上,并且更喜欢将默认附件存储在那里。

如果我也能够在默认头像上使用变体方法,我会更喜欢。

关于如何实现这一目标的任何建议?我可以创建某种未链接到任何特定记录的默认附件并在头像不存在时使用它吗?

0 投票
6 回答
8768 浏览

ruby-on-rails - 如何在 Rails 5.2 中复制存储在 ActiveStorage 中的文件

我有一个使用 ActiveStorage 的模型:

如何创建包含初始 poster_image 文件副本的 Package 对象的副本。类似于以下内容:

0 投票
1 回答
1589 浏览

ruby-on-rails - Rails / ActiveStorage 文件处理——仅在运行时还是在上传时?如果是这样,为什么?

我正在计划一个涉及视频上传和压缩的 RoR 项目。通常,我会使用 Shrine 处理文件附件,并在上传后在后台作业中使用ffmpeg处理视频压缩。

现在这ActiveStorage是内置的 Rails 5.2,我想选择它,但我不确定它是否可以很好地处理视频(带压缩)。到目前为止,我只找到了关于处理图像(使用 MiniMagick)或创建视频/pdf 预览(使用 ffmpeg 或 mutools)的文档,这一切似乎都是即时发生的。

由于视频的压缩是时间密集型的,我想说它应该在上传之后直接发生,以便为请求做好准备。上传后是否有处理文件的选项,使用 ActiveStorage 还是仅在运行中

如果不是,为什么或者更确切地说建议即时处理所有文件处理?

谢谢

0 投票
2 回答
2143 浏览

ruby-on-rails - How to create a cropped and centered image with Imagemagick's command line options with variant?

I have a Ruby on Rails 5.2 RC2 app that uses ActiveStorage for hosting images. In particular it's transforming images with variant.

I would like to pass an image, typically of 16:9 or 4:3 ratio and have variant crop it to a specific ratio, width x height, and have it centered. The image could be horizontal or vertical, but the new cropped size is centered.

Image Cropping

From the Imagemagick Command Line Options documentation, I have the following:

<%= image_tag @photo.image.variant(extent: "1:1", crop: "800x800").processed.service_url %>

It creates a square crop, but it's not centered. It defaults to the left. How do I create a cropped image that's centered with Imagemagick's command line option?

I'm looking for a solution that should work on any image size or aspect ratio. I believe any resizing works off of the originally uploaded image for creation.

For reference, I'm looking to upgrade an older Rails app that uses Carrierwave. There is a resize_to_fill that does exactly that. Example code:

version :square_thumb do process :resize_to_fill => [200,200] end

0 投票
0 回答
505 浏览

javascript - 发送图像时的 Rails 5.2 ActionCable 和 ActiveStorage

我尝试按照一些 ActionCable 教程通过 ActiveStorage 创建图像记录将数据从客户端传递到服务器端,但它不起作用。

这是我的代码:来自客户端的代码确实传递到服务器端,但我无法通过 ActiveStorage 创建新图像。请帮我解决它并告诉我它为什么会发生。谢谢。

我已经将 pass 图像测试为 base64/blob(我真的不知道)

Room_channel.rb

房间.咖啡

Ps:我上面的代码没有考虑缩进。它确实在我的机器上工作。

0 投票
1 回答
1850 浏览

ruby-on-rails - 通过 API 使用 Activestorage(直接上传)

我想使用 Rails 作为移动应用程序(Android 和 iOS)的后端,其中一个要求是文件上传。

我找不到任何有关以这种方式直接上传使用 Activestorage 的资源 - 有人有示例或提示吗?

另一种选择——我想——是对 activestorage.js 进行逆向工程,并完全按照它的功能进行操作。但也许我不是第一个有这种需求的人......

0 投票
1 回答
1181 浏览

ruby-on-rails - 活动存储/清理文件 url

围绕同一问题的多个问题,主动存储返回文件网址的方式

现在使用默认设置,以下(云或本地)以某种方式返回以下内容:

_domain/_path/_superlong_hash/_original_filename._ext

给定回形针或许多其他现有的 gem, _path/_superlong_hash/_original_filename._ext 部分可以自定义,最终可能会出现在任何文件的干净 url

意思是:

  • 有没有办法_path用更定制的东西“代理”?
  • 有没有办法避免_superlong_hash
  • 有没有办法即时(或上传)自定义文件名?

为了使它成为一个单行,如何自定义文件 url ?

我在这里和那里看到人们最终创建自定义控制器来提供具有体面 url 的文件,但让我们承认这是不行的(恕我直言)