Ruby on rails 回形针图像未在ruby on rails中使用伪造宝石数据上传?
我正试图使用faker gem上传假图像数据,但我发现了以下错误:Ruby on rails 回形针图像未在ruby on rails中使用伪造宝石数据上传?,ruby-on-rails,ruby,paperclip,faker,Ruby On Rails,Ruby,Paperclip,Faker,我正试图使用faker gem上传假图像数据,但我发现了以下错误: Paperclip::AdapterRegistry::NoHandlerError: No handler found for "https://robohash.org/app/assets/image.jpg.png?size=300x300&set=set1" 在db/seed.rb中 5.times do Image.create([{ filename:Faker::Food.di
Paperclip::AdapterRegistry::NoHandlerError: No handler found for "https://robohash.org/app/assets/image.jpg.png?size=300x300&set=set1"
在db/seed.rb中
5.times do
Image.create([{
filename:Faker::Food.dish,
title:Faker::Food.dish,
item_image:Faker::Avatar.image('app/assets/image.jpg')
}])
end
在db/image.rb中
class CreateImages < ActiveRecord::Migration[5.2]
def change
create_table :images do |t|
t.string :title
t.string :filename
t.timestamps
end
end
end
class CreateImages
在db/add_attachment_item_image_to_images.rb(回形针gem迁移文件)中
class AddAttachmentItemImageToImages
试试
Faker::Avatar.image('image.jpg')
您的图像必须位于app/assets/images
或者试着跟随
File.open(File.join(Rails.root, "app/assets/images/image.jpg"))
如果FactoryGirl是您的下一个选项,您可以在
spec/factories.rb
中使用如下内容:
include ActionDispatch::TestProcess
FactoryGirl.define do
factory :picture do
original_filename "test.jpg"
file { fixture_file_upload(Rails.root.to_s + '/spec/fixtures/files/test.jpg', 'img/jpeg') }
end
end
Faker::Avatar.image('app/assets/image.jpg')
返回一个带有url到图像占位符的字符串()https://robohash.org/app/assets/image.jpg.png?size=300x300&set=set1“
),但回形针需要一个文件或IO
因此,您应该传递类似File.new(File.join(Rails.root、'spec'、'fixtures'、'files'、'avatar.jpg')的内容)
(并在该路径上放置一些图像)它可以工作
20.times do
Image.create(
item_image: Rails.root.join("app/assets/images/image.jpg").open,
filename: "Whole Wheat Pasta in Mushroom Sauce",
title: "pasta"
)
end
multipart:true
设置在你的表单中了吗?@nileshkumar lol,他不是从表单创建的,它一定是测试数据。@ray:哦,我现在明白了:)试试Faker::Avatar.image('image.jpg')
或Faker::Avatar.image(“{Rails.root}/app/assets/image.jpg”)
hi ray,它不起作用了。同样的错误20次做image.create(item_-image:Rails.root.join(“app/assets/images/food_-image1.jpg”).open,filename:“food”,title:“food”)结束它尝试了这种工作方式,但它始终只存储一个img。如果你有20个图像,那么你可以像这样做,20.times do|n| image.create(item|-image:Rails.root.join(“app/assets/images/food|-image/food|-image{n}.jpg”).open,文件名:“food”,标题:“food”)
20.times do
Image.create(
item_image: Rails.root.join("app/assets/images/image.jpg").open,
filename: "Whole Wheat Pasta in Mushroom Sauce",
title: "pasta"
)
end