Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 回形针图像未在ruby on rails中使用伪造宝石数据上传?_Ruby On Rails_Ruby_Paperclip_Faker - Fatal编程技术网

Ruby on rails 回形针图像未在ruby on rails中使用伪造宝石数据上传?

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

我正试图使用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
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