相关疑难解决方法(0)

Rails 6 Active Storage:无法找到或构建 blob:预期可附加,得到 nil

刚刚创建了一个新的 Rails 6 应用程序,我试图通过使用 rails scaffold 生成的表单将图像添加到 active_storage blob 而不是替换它们。

遵循文档(https://guides.rubyonrails.org/active_storage_overview.html#has-many-attached),在我的控制器中使用 #attach ,但它会导致一个错误页面并保持替换所有的“默认”行为图像而不是添加新图像。

使用 Rails 6.0.0 和 active_storage 6.0.0

我首先创建了一个 Page 模型rails g scaffold Page name:string,然后在我的 page.rb 模型中添加了与 ActiveStorage 的关联has_many_attached :images

在我的表单中,我添加了一个 file_field,允许多次上传:

<%= form.file_field :images, multiple: true %>
Run Code Online (Sandbox Code Playgroud)

这是我的控制器更新操作,请注意@page.images.attach(params[:images]),根据文档,它应该可以完成这项工作

<%= form.file_field :images, multiple: true %>
Run Code Online (Sandbox Code Playgroud)

在填写表格,附加新图片并发布时,我收到以下错误:

ArgumentError in PagesController#update
Could not find or build blob: expected attachable, got nil 
Run Code Online (Sandbox Code Playgroud)

指向线 @page.images.attach(params[:images])

检查服务器日志时,我注意到尽管出现错误,但默认行为仍在运行:旧图像被删除,新图像被附加。

ruby-on-rails rails-activestorage ruby-on-rails-6

6
推荐指数
2
解决办法
5680
查看次数

Rails Active Storage - 保留现有文件/上传吗?

我有一个 Rails 模型:

has_many_attached :files
Run Code Online (Sandbox Code Playgroud)

默认情况下,通过 Active Storage 上传时,如果您上传新文件,它会删除所有现有上传内容并将其替换为新文件。

我有一个控制器破解,由于多种原因,它不太理想:

在 Rails 6 中使用 has_many_attached 更新图像的正确方法是什么

有没有办法配置 Active Storage 以保留现有的存储?

ruby-on-rails rails-activestorage

6
推荐指数
2
解决办法
3500
查看次数

如何在 ActiveAdmin 中使用 ActiveStorage `has_many_attached` 编辑多个附加图像

我有一个简单的模型,可以通过ActiveStorage处理文件存储附加多个图像。

我正在使用ActiveAdmin编辑我的模型并上传/附加图像 - 到目前为止没有问题。

问题是,当我想编辑我的模型并添加新图像时,之前的图像会被删除,而只会添加新的图像。

我可以预览已经附加的图像,也可以单独删除它们,但是我如何实现,通过上传新图像,旧图像不会被删除?

我的型号:

class Post < ActiveRecord::Base
  has_many_attached :images
end
Run Code Online (Sandbox Code Playgroud)

我的 ActiveAdmin 页面:

ActiveAdmin.register AdminPost do
  permit_params images:[]

  form do |f|
    f.input :images, as: :file, input_html: { multiple: true }

    if @resource.images.exists?
      @resource.images.map do |m|
        para image_tag m
      end
    end
  end 
end
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails formtastic activeadmin rails-activestorage

5
推荐指数
1
解决办法
2683
查看次数