Rails 6 Active Storage:无法找到或构建 blob:预期可附加,但为零

2024-01-03

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

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

将 Rails 6.0.0 与 active_storage 6.0.0 结合使用

我首先使用制作了一个页面模型rails g scaffold Page name:string然后在我的 page.rb 模型中添加与 ActiveStorage 的关联has_many_attached :images

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

<%= form.file_field :images, multiple: true %>

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


def update

    respond_to do |format|
      if @page.update(page_params)

        @page.images.attach(params[:images])

        format.html { redirect_to site_pages_path(@site), notice: 'Page was successfully updated.' }
        format.json { render :show, status: :ok, location: @page }
      else
        format.html { render :edit }
        format.json { render json: @page.errors, status: :unprocessable_entity }
      end
    end
  end

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

ArgumentError in PagesController#update
Could not find or build blob: expected attachable, got nil 

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

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


在 Rails 6 中,has_many_attached 的默认行为从 Rails 5 开始已更改。以前,文件被附加到附件列表中而不是被覆盖。

幸运的是,这个默认值可以在你的 application.rb 中更改:

config.active_storage.replace_on_assign_to_many = false

然后您可以保留images: []允许列表中的部分并删除@page.images.attach(params[:images])完全调用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails 6 Active Storage:无法找到或构建 blob:预期可附加,但为零 的相关文章

  • Rails 中的漂亮路径

    我有一个类别模型 我使用默认的脚手架来路由它resources categories 我想知道是否有办法改变路径 category id to category name 我补充道 match categories name gt cate
  • 限制 Imagemagick 使用的空间和内存

    我在 Rails 应用程序上使用 Imagemagick 使用 rmagick 但我的服务器 Ubuntu 不是很大 当我启动转换进程时 Imagemagick 占据了我的服务器 30GB HDD 的所有位置 内存 我想限制内存和 tmp
  • 与heroku配合使用的统计引擎

    我有一个 Heroku Rails 应用程序 需要处理一些重要的数字 并且我需要使用像 R 这样的统计库 更糟糕的是 MatLab 我正在寻找以下任何问题的答案 是否有不需要二进制文件的功能齐全的统计包 GEM 是否可以将 R 二进制文件作
  • 新 Rails 应用程序出现问题

    我刚刚创建了一个新的rails应用程序 在CL上 使用rails new 我使用的是4 2 6 但似乎在我对应用程序执行任何操作之前我遇到了错误 first config environments development rb 53 in
  • 获取特定时区一天开始时的时间对象

    如何获取代表给定时区特定日期的一天开始时间的 ruby Time 对象 date Date today date to time in time zone America New York beginning of day 目前输出 gt
  • 查找日期时间与今天日期匹配的记录 - Ruby on Rails

    我有一个交易表 需要查找日期与今天的日期匹配的记录 从 Rails 控制台 我需要匹配的日期字段如下所示 我已经分配了一条记录来进行测试 ruby 1 9 2 p0 gt deal start gt Tue 10 May 2011 00 0
  • 测试 rake 任务中定义的方法

    我想测试 rake 任务中定义的方法 耙文件 lib tasks simple task rake namespace xyz do task simple task gt environment do begin if task need
  • Ruby on Rails,在服务器启动 2.3 上运行方法

    我想在 Rails 服务器启动时运行一个方法 这是一种模型方法 我尝试使用 config initializers myfile rb 但该方法是在迁移期间调用的 因此它是从不存在的表中选择的 也尝试过environment rb 但该类尚
  • Rails:通过 Ajax 传递参数

    我需要通过 javascript 将参数传递回服务器 目前 我将它们传递给 JavaScript 如下所示 sendParams 然后像这样将它们发回 function sendParams q ajax url mymodel myact
  • Rails - 如何重写设计 SessionsController 以在用户登录时执行特定任务?

    使用 Devise 管理用户会话 注册 每次用户登录时 以及在他被 devise 重定向到连接的主页之前 我需要执行特定任务 例如 更新该特定用户的用户表中的某些字段 用户 我是否必须重写 devise SessionsController
  • 导轨中的多个 DB 连接

    我正在尝试在 ROR 应用程序中连接多个数据库 我的 database yml 如下所示 在你的database yml文件中 发展 adapter mysql username root password database example
  • 如何运行 Rails 服务器守护进程?

    我是 Rails 世界的新手 需要在守护进程模式下运行我的 Rails 测试服务器 我注意到有一个 d 标志 但它对我不起作用 rails s d 不应该是这样吗 它应该是 rails server daemon to kill the s
  • Rails 中的代码片段应该放在哪里?

    我有这个代码片段 可以为 POST 生成签名 它的细节并不重要 但我想知道的是 由于它不是与模型相关的代码块 所以它确实可以在任何地方使用 在控制器中 在模型中 在视图助手中 即使在视图中 因此 我不确定在哪里 甚至更大的问题是 一旦将其放
  • 将回形针 url 添加到 json

    通常在 html 中 我们会在图像标签内使用 Model field url thumb 如何在 json 上执行此操作 尤其是使用 hash secret 如果这对任何人都有帮助 我找到了一个很好的方法来做到这一点 class MyMod
  • 我可以使用 Rails API 执行 INSERT-SELECT 操作吗?

    我必须将一个表中的 BLOB 字段复制到另一个表中 并且我想使用 INSERT SELECT 查询来实现此目的 INSERT INTO target table key data comment SELECT my key data som
  • 在 cygwin 和 powershell 中查看不同的 gem 列表

    我用的是gem listpowershell 和 cygwin 中的命令都显示不同的 gem 列表 Cygwin 显示 LOCAL GEMS bundler 1 2 3 json 1 7 5 minitest 2 12 1 rake 0 9
  • 将表列添加到 Group by 子句 - Ruby on Rails - Postgresql

    我正在尝试使用 Heroku 显然 Postgresql 对于聚合函数来说比 SQL 严格得多 当我推送到 Heroku 时 我收到一条错误消息 内容如下 关于另一个问题 https stackoverflow com questions
  • Rails has_many 通过带有附加属性的表单

    我正在尝试创建一个表单 允许用户向活动添加 编辑 删除位置 我目前找到的所有例子要么是HABTM表单 不允许编辑存在于表单中的附加属性 has many through配置 或仅列出现有关系 下面的图片显示了我想要完成的任务 该列表将显示每
  • 当你不继承Rails 4中的ApplicationController时,如何包含respond_to?

    我在 Rails 4 1 2 应用程序中有一个 API 控制器 它不继承自应用程序控制器 我试图包含 respond to 方法并得到一个方法未定义的错误 所以然后我需要在顶部的操作包 如下所示 require action pack cl
  • Ruby on Rails 中的枚举

    我是一名 C 程序员 我正在研究 ruby on Rails 但我可能在心态或其他方面遇到了一些麻烦 我有一个投票对象 该对象可以是赞成 中立或反对 我通常会让投票对象有一个像这样的字段 private VoteEnum voteEnum

随机推荐