gpt4 book ai didi

ruby-on-rails - 载波:从 ASCII-8BIT 到 UTF-8 的编码::UndefinedConversionError ("\xFF")

转载 作者:数据小太阳 更新时间:2023-10-29 08:02:27 33 4
gpt4 key购买 nike

我正在尝试使用 Carrierwave 将多个文件上传到一个名为 Post 的记录,其中包含一个名为 images 的 json 属性。但是当我尝试保存记录时,出现了这个错误:

  (0.5ms)  ROLLBACK
Completed 401 Unauthorized in 15ms (ActiveRecord: 0.8ms)
Encoding::UndefinedConversionError ("\xFF" from ASCII-8BIT to UTF-8):

我以前使用过 Carrierwave,但从未遇到过此错误。我之前检查过是否有人遇到过这个问题,但我没有找到太多。 This question建议使用 activesupport-json_encoder gem,但此 gem 与 Rails 5 不兼容。还建议使用 force_encoding 方法并在保存文件时使用“wb”标志,但是 Carrierwave 代码没有地方可以实现这些建议。

这是我的代码:

表单

<%= form_for @post, :html => {multipart: true}, do |f| %>
<%= f.file_field :images, multiple: true %>
<%= f.submit "submit" %>
<% end %>

帖子 Controller

  ...
private
def post_params
params.require(:post).permit({images: []})
end
end

帖子迁移

  ...
create_table :posts do |t|
t.json :images
...

帖子 uploader

class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick

storage :fog

def fix_exif_rotation
manipulate! do |img|
img.tap(&:auto_orient)
end
end

process :fix_exif_rotation
process :resize_to_fit => [800, 56000]

version :thumb do
process resize_to_fit: [300, 56000]
end
end

最佳答案

我的猜测是您需要在 ActiveRecord::Migration 中使用 :string 而不是 :json

class AddImagesToGallery < ActiveRecord::Migration
def change
add_column :galleries, :images, :string, array: true, default: [] # add images column as array
end
end

您可以查看以下方法:Add more files and remove single file when using default multiple file uploads feature了解更多。

编辑 - 添加原因

您收到此错误的原因是 gem activesupport-json_encoder (一个 PR 从 2014 年开始卡在那里)不再维护并且与 rails 5.x 不兼容。

关于ruby-on-rails - 载波:从 ASCII-8BIT 到 UTF-8 的编码::UndefinedConversionError ("\xFF"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51345735/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com