rails ruby 中的 gem 数据无法上传回形针图像?
Paperclip image not uploads with faker gem data in ruby on rails?
我正在尝试使用 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.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
in db/add_attachment_item_image_to_images.rb(回形针gem迁移文件)
class AddAttachmentItemImageToImages < ActiveRecord::Migration[5.2]
def self.up
change_table :images do |t|
t.attachment :item_image
end
end
def self.down
remove_attachment :images, :item_image
end
end
试试,
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')
returns 带有 url 的 String
到图像占位符 ("https://robohash.org/app/assets/image.jpg.png?size=300x300&set=set1"
),但 Paperclip 需要一个文件或 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
我正在尝试使用 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.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
in db/add_attachment_item_image_to_images.rb(回形针gem迁移文件)
class AddAttachmentItemImageToImages < ActiveRecord::Migration[5.2]
def self.up
change_table :images do |t|
t.attachment :item_image
end
end
def self.down
remove_attachment :images, :item_image
end
end
试试,
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')
returns 带有 url 的 String
到图像占位符 ("https://robohash.org/app/assets/image.jpg.png?size=300x300&set=set1"
),但 Paperclip 需要一个文件或 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