【问题标题】:Ruby on rails bootsy + cloudinary upload image troubleRuby on rails bootsy + cloudinary 上传图片麻烦
【发布时间】:2018-02-05 07:18:18
【问题描述】:

我有 RoR 项目,生活在 heroku 上。我有 bootsy(具有图像上传功能的编辑器),我有 cloudinary。 我已经设置了上传器、cloudinary api 密钥和初始化程序(如果需要,可以向您展示)。现在,当我尝试在 bootsy 中上传图像时 - 它会创建数据库行,并在 cloudinary 中创建图像。但是在bootsy的js窗口中,有空<img>

ruby '2.3.1'
gem 'rails', '~> 5.1.1'
gem 'bootsy'
gem 'carrierwave'
gem 'fog'
gem 'cloudinary', '~> 1.8.1'

1) uploaders/bootsy/image_uploader.rb

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

    # storage Bootsy.storage

    include Cloudinary::CarrierWave

    def store_dir
      "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
    end

    version :large do
      process :eager => true
      process resize_to_fit: [
                  700, 700
              ]

    end

    version :medium do
      process :eager => true
      process resize_to_fit: [
                  300, 300
              ]
    end

    version :small do
      process :eager => true
      process resize_to_fit: [
                  150, 150
              ]
    end

    version :thumb do
      process :eager => true
      process resize_to_fit: [
                  150, 150
              ]
    end


    def extension_white_list
      %w(jpg jpeg gif png)
    end
  end
end

2) 初始化程序/bootsy.rb

Bootsy.setup do |config|
  config.image_versions_available = [:small, :medium, :large, :original]
  config.storage = :fog
end

3) 模型/article.rb

class Article < ApplicationRecord
  include Bootsy::Container
  mount_uploader :image, Bootsy::ImageUploader

  mount_uploader :main_image, ArticleImageUploader
  mount_uploader :list_image, ArticleImageUploader

end

P.S 好吧,我真的不知道 - 我只是在公共存储库中重复这个错误。 https://bitbucket.org/dekakisalove/bootsy_tes/我会尽快为这个问题增加赏金。

【问题讨论】:

  • 请添加任何错误消息和日志输出,否则我们无法诊断问题。
  • @Зелёный 我已经展示了屏幕。没有错误消息。只是一个空的img。在 Rails 日志中 - 一切看起来也不错。在 cloudinary 图像中创建。在数据库中创建行
  • 如果你知道的话,还有 webbrowser 控制台。
  • @Зелёный 没有错误,控制台也是空的。
  • 根本没有魔法,你漏掉了一些简单的东西,我确定是js的问题。

标签: ruby-on-rails heroku cloudinary


【解决方案1】:

这个问题是由于类Cloudinary::CarrierWave::Storage的方法store!的返回值不正确

要解决此问题,您可以使用多种变体,例如:

像这样在config/initializers/cloudinary_store.rb

module CloudinaryStorage
  def store!(file)
    super || uploader.metadata
  end
end

ActiveSupport.on_load :after_initialize do
  Cloudinary::CarrierWave::Storage.prepend CloudinaryStorage
end

或喜欢这个app/uploaders/image_uploader.rb

module Bootsy
  class ImageUploader < CarrierWave::Uploader::Base
    after :store, :reload_data

    def reload_data(file)
      model.reload
    end
    # etc..

【讨论】:

猜你喜欢
  • 2016-11-12
  • 2019-07-13
  • 2010-12-23
  • 2013-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-25
  • 1970-01-01
相关资源
最近更新 更多