簡體   English   中英

Rails 5.2(升級)-Active Storage不顯示圖像

[英]Rails 5.2 (Upgrade) - Active Storage does not display image

所以我已經從Rails 5.1升級到5.2

rails app:update

一切正常,我立即設置了活動存儲配置,以供Web應用程序中的新部分使用。

我創建了遷移:

rails active_storage:install
rake db:migrate

我配置了conf / storage.yml-使用AWS S3進行生產:

測試:服務:磁盤根:<%= Rails.root.join(“ tmp / storage”)%>

本地:服務:磁盤根:<%= Rails.root.join(“存儲”)%>

亞馬遜:服務:S3 access_key_id:<%= Rails.application.credentials.dig(:aws,:access_key_id)%> secret_access_key:<%= Rails.application.credentials.dig(:aws,:secret_access_key)%>地區:歐盟-west-2桶:隨便

將所需的GEM添加到GEMFILE中:

gem 'aws-sdk-s3'

確保開發環境使用本地設置:

config.active_storage.service = :local

將所有必需的行添加到模型:

class Article < ApplicationRecord
  has_one_attached :main_picture
  ... 
end

我做了一些花哨的東西,例如驗證,自定義變體等,但是出於測試目的和使基礎知識正常工作,我注釋掉了所有這些東西。

更新控制器以使用Pundit中指定的允許屬性:

控制者

@article.update(permitted_attributes(@article))

權威

class ArticlePolicy < ApplicationPolicy

  ...

  def permitted_attributes
    if !user.nil? && user.admin
      [:title, :content, :teaser, :slug, :published, :user_id, :main_picture]
    end
  end

  ...
end

現在,上傳變得輕而易舉-到我的本地環境,我什至測試了將其上傳到AWS的性能,但讓我們堅持使用本地環境。 我可以在以下位置找到有關本地環境的最新上傳:

/storage/N1/Ay/N1AyNaBeMNGhhmPSR69XwA9a

當我嘗試在視圖中顯示圖像時,這就是URL:

http://localhost:3000/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBQQT09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--fd200a456532a80dfb122b2bdd9a53181b2a62aa/428KB.jpg

在active_storage_blob表中看起來像這樣:

id,key,filename,content_type,metadata,byte_size,checksum,created_at
"55","N1AyNaBeMNGhhmPSR69XwA9a","428KB.jpg","image/jpeg","{""identified"":true,""width"":1920,""height"":1080,""analyzed"":true}","428299","48c8G3xQj5ENGgqqM08seQ==","2018-07-24 15:21:11"

這是我嘗試顯示圖像的各種方法:

= image_tag @article.main_picture
= image_tag url_for(@article.main_picture)
= image_tag @article.main_picture.variant(resize_to_fit: [100, 100]

這些選項都不顯示成功上載並存儲在數據庫中的圖像。 我所得到的只是圖像占位符。

對於最新的工作(但沒有),我在GEMFILE中添加了以下內容(按照指南 ):

gem 'image_processing', '~> 1.2'

對此有類似的威脅抱怨-使用Rails 5.1並在Gemfile中添加active_storage-但沒有真正的答案。 根據建議,我嘗試添加:

config / application.rb

require 'active_storage/engine'

沒有幫助顯示圖像:(

---更新:訪問URL時請求的日志-

Started GET "/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBQQT09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--fd200a456532a80dfb122b2bdd9a53181b2a62aa/428KB.jpg" for 127.0.0.1 at 2018-07-25 12:41:36 +0100
Processing by ActiveStorage::BlobsController#show as JPEG
  Parameters: {"signed_id"=>"eyjfcmfpbhmionsibwvzc2fnzsi6ikjbahbqqt09iiwizxhwijpudwxslcjwdxiioijibg9ix2lkin19--fd200a456532a80dfb122b2bdd9a53181b2a62aa", "filename"=>"428kb"}
** [Localeapp] 1532518896 - Handling translation updates
** [Localeapp] 1532518896 - polling
** [Localeapp] API CALL: get https://api.localeapp.com/v1/projects/qXa7rByH1jQ9cNrU8t46zQkk8rkq3fMka13EACmQkXZ5FFTuUn/translations.yml?updated_at=1532518849
** [Localeapp] ATTEMPT 1
** [Localeapp] RESPONSE: 200
** [Localeapp] CALLING SUCCESS HANDLER: handle_success
** [Localeapp] 1532518897 - poll success
** [Localeapp] 1532518897 - reloading I18n
Filter chain halted as :set_blob rendered or redirected
Completed 404 Not Found in 917ms (ActiveRecord: 0.0ms)


Started GET "/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBQQT09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--fd200a456532a80dfb122b2bdd9a53181b2a62aa/428KB.jpg?disposition=attachment" for 127.0.0.1 at 2018-07-25 12:41:39 +0100
Processing by ActiveStorage::BlobsController#show as JPEG
  Parameters: {"disposition"=>"attachment", "signed_id"=>"eyjfcmfpbhmionsibwvzc2fnzsi6ikjbahbqqt09iiwizxhwijpudwxslcjwdxiioijibg9ix2lkin19--fd200a456532a80dfb122b2bdd9a53181b2a62aa", "filename"=>"428kb"}
** [Localeapp] 1532518899 - Handling translation updates
** [Localeapp] 1532518899 - polling
** [Localeapp] API CALL: get https://api.localeapp.com/v1/projects/qXa7rByH1jQ9cNrU8t46zQkk8rkq3fMka13EACmQkXZ5FFTuUn/translations.yml?updated_at=1532518897
** [Localeapp] ATTEMPT 1
** [Localeapp] RESPONSE: 200
** [Localeapp] CALLING SUCCESS HANDLER: handle_success
** [Localeapp] 1532518900 - poll success
** [Localeapp] 1532518900 - reloading I18n
Filter chain halted as :set_blob rendered or redirected
Completed 404 Not Found in 837ms (ActiveRecord: 0.0ms)

注意:

我添加了一個圖像下載按鈕來生成日志:

= link_to "Download", rails_blob_path(@article.main_picture, disposition: "attachment")

您的signed_id似乎無效,這就是為什么您使“過濾器鏈因:set_blob呈現或重定向而暫停”的原因。

添加到響應:

該問題是由區分大小寫的URL引起的。 已安裝GEM“ route_downcaser”。 刪除此GEM后,一切正常。

另外,“ route_downcaser”提供了exclude_patterns選項。 因此,您可以將GEM與active_storage一起使用,但請確保將以下內容添加到初始化程序中:

# config/initializers/route_downcaser.rb

RouteDowncaser.configuration do |config|
  config.redirect = true

  config.exclude_patterns = [
    /assets\//i,
    /fonts\//i,
    /active_storage\//i
  ]
end

更多配置選項可以在這里找到:)

暫無
暫無

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

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