簡體   English   中英

Carrierwave - 添加S3 / Fog進行生產后的開發上傳問題

[英]Carrierwave - development upload issues after adding S3/Fog for production

我得到了我的生產rails 3應用程序設置,以便在Heroku上運行時使用Fog / S3進行存儲。 在此過程中,我對/config/initializers/carrierwave.rb進行了一些更改。 這是它的樣子:

CarrierWave.configure do |config|

  if Rails.env.test? || Rails.env.development?
    config.root = Rails.root
    config.storage = :file
  else
    config.storage = :fog
    config.fog_credentials = {
    :provider               => 'AWS',                        # required
    :aws_access_key_id      => ENV['MY_ID'],                        # required
    :aws_secret_access_key  => ENV['MY_KEY']                        # required
    }
      config.fog_directory  = 'my-app'                     # required
      config.fog_public     = false                                   # optional, defaults to true
      #config.fog_attributes = {'Cache-Control'=>'max-age=315576000'}  # optional, defaults to {}
  end
end

這是我的image_uploader

class ImageUploader < CarrierWave::Uploader::Base
  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end
end

上傳工作正常。 文件正在開發中上傳到正確的目的地,但在查看上傳的圖像時出現此錯誤:

ActionController::RoutingError (No route matches [GET] "/uploads/vendor/image/24/StoreB.png"):

我不確定如何解決這個問題。 我在上傳器中遺漏了什么嗎? 請幫助? 如果您需要更多信息,請告訴我。 提前致謝!

編輯拋出錯誤的代碼示例:

<% @stores.each do |s| %>
        <div class="row">
                <div class= "col-xs-9 horz-cent">
                        <%= link_to image_tag("#{s.vendor.image}"), user_show_store_path(s) %>
                </div>
        </div>
<% end %>

config.root設置如下

 config.root = Rails.root.join('public')

目前,文件正在Rails.root目錄中上傳,這些文件無法從瀏覽器訪問,因為它們不在public目錄中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM