我配置了我的Rails應用程序以使用Carrierwave進行圖像上傳。根據文檔,我包含了適用於多文件上傳的gem版本。在Carrierwave上傳器中,我包含了Minimagick。當我嘗試使用#resize_to_fill方法,我得到以下錯誤,並上傳失敗:Carrierwave #Resize_to_fill不適用於Minimagick(僅適用於rMagick)
ActiveRecord::RecordInvalid: Validation failed: Images translation missing: en.errors.messages.mini_magick_processing_error
然而,當我從Minimagick切換到Rmagick,它完美的作品?如果可能,我寧願使用Minimagick。另一個奇怪的是像#resize_to_fit這樣的其他方法與Minimagick和Rmagick完美合作。有沒有人有這個問題?
這裏有重要的文件:
的Gemfile
gem 'rails', '5.0.1'
gem 'bcrypt', '3.1.11'
gem 'faker', '1.6.6'
gem 'carrierwave', github: 'carrierwaveuploader/carrierwave'
gem 'mini_magick', '4.5.1'
# gem 'rmagick', '~> 2.15', '>= 2.15.4'
gem 'fog', '1.38.0'
gem 'will_paginate', '3.1.0'
gem 'bootstrap-will_paginate', '0.0.10'
gem 'bootstrap', '~> 4.0.0.alpha6'
source 'https://rails-assets.org' do
gem 'rails-assets-tether', '>= 1.3.3'
end
gem 'puma', '3.4.0'
gem 'pg', '0.18.4'
gem 'sass-rails', '5.0.6'
gem 'uglifier', '3.0.0'
gem 'coffee-rails', '4.2.1'
gem 'jquery-rails', '4.1.1'
gem 'turbolinks', '5.0.1'
gem 'jbuilder', '2.4.1'
group :development, :test do
gem 'byebug', '9.0.0', platform: :mri
end
group :development do
gem 'web-console', '3.1.1'
gem 'listen', '3.0.8'
gem 'spring', '1.7.2'
gem 'spring-watcher-listen', '2.0.0'
end
group :test do
gem 'rails-controller-testing', '0.1.1'
gem 'minitest-reporters', '1.1.9'
gem 'guard', '2.13.0'
gem 'guard-minitest', '2.4.4'
end
上傳/ images_uploader.rb
class ImagesUploader < CarrierWave::Uploader::Base
# Include RMagick or MiniMagick support:
# include CarrierWave::RMagick (only this one works)
include CarrierWave::MiniMagick
process resize_to_fill: [900, 600]
if Rails.env.production?
storage :fog
else
storage :file
end
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
def extension_white_list
%w(jpg jpeg gif png)
end
end
兩個Minimagick和Rmagick應根據支持#resize_to_fill文檔a就像我在網上看到的很多例子一樣。我也試過使用不同版本的Carrierwave和Minimagick,但沒有任何工作。我也嘗試重新安裝Imagemagick。依然沒有。
有人可以幫忙!另外,如果我不能讓Minimagick工作,Rmagick真的不好用嗎?人們真的反對我所看到的。謝謝!
這是比較合適的評論,你的回答不是一個實際的答案 –
這不提供問題的答案。一旦你有足夠的[聲譽](https://stackoverflow.com/help/whats-reputation),你將可以[對任何帖子發表評論](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提問者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- I-DO-代替)。 - [來自評論](/ review/low-quality-posts/18987106) –