Я пытаюсь сохранить файлы изображений в облаке-хранилище перевозчика, тумане и облачном хранилище Google.
Поэтому, когда я отправляю данные и поле изображения
<ActionDispatch::Http::UploadedFile>
, но ошибка "Unpermitted параметр:: format".
Это хорошо работало с Amazon S3, но я уже заплатил за gcp, поэтому хочу сохранить изображения здесь.
Дайте мне несколько советов, пожалуйста. Спасибо
image_uploader.rb
class ImageUploader < CarrierWave::Uploader::Base
storage :fog
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
def extension_whitelist
%w(jpg jpeg gif png)
end
end
fog.rb
CarrierWave.configure do |config|
config.fog_provider = 'fog/google'
config.fog_credentials = {
provider: 'Goggle',
aws_access_key_id: ENV['GOOGLE_ACCESS_KEY'],
aws_secret_access_key: ENV['GOOGLE_SEC_KEY'],
#region: 'ap-northeast-1',
#endpoint: 'https://s3-ap-northeast-1.amazonaws.com'
endpoint: 'https://storage.googleapis.com'
}
config.fog_directory = 'fullout-linemanager-storage'
config.fog_public = true
config.fog_attributes = { }
config.remove_previously_stored_files_after_update = true
end
response.rb (Модель)
class Reaction < ApplicationRecord
mount_uploader :file, ImageUploader
end
Reaction_controller.rb
(...)
def reaction_params
if params[:reaction].present?
params[:reaction][:channel_id] = current_user.target_channel
params[:reaction][:target_number] = 0
params.require(:reaction).permit(
:id, :name, :contents, :reaction_type ,:channel_id, :tag, :target_number,
:image, :created_at, :updated_at, :match_option
)
else
params[:channel_id] = current_user.target_channel
params[:target_number] = 0
params.permit(
:id, :name, :contents, :reaction_type ,:channel_id, :tag, :target_number, :created_at, :updated_at, :match_option, :image
)
end
end
log
Parameters: {"name"=>"text_welcome_message", "reaction_type"=>"image", "contents"=>"[ NO TEXT ]", "image"=>#<ActionDispatch::Http::UploadedFile:0x00007f91f79a9968 @tempfile=#<Tempfile:/var/folders/jb/qnz4lt193kz7wzj06xrp9q5w0000gn/T/RackMultipart20200204-6757-1h92oyl.png>, @original_filename="Ad-2.png", @content_type="image/png", @headers="Content-Disposition: form-data; name=\"image\"; filename=\"Ad-2.png\"\r\nContent-Type: image/png\r\n">, "tag"=>"ALL", "match_option"=>"1"}
12:09:10 web.1 | User Load (0.4ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 ORDER BY `users`.`id` ASC LIMIT 1
12:09:10 web.1 | ↳ app/controllers/api/reactions_controller.rb:188
12:09:10 web.1 | Unpermitted parameter: :format
12:09:10 web.1 | Option Load (7.7ms) SELECT `options`.* FROM `options` WHERE `options`.`id` = 1 LIMIT 1
12:09:10 web.1 | ↳ app/controllers/api/reactions_controller.rb:63
12:09:10 web.1 | (0.3ms) BEGIN
12:09:10 web.1 | ↳ app/controllers/api/reactions_controller.rb:64
12:09:10 web.1 | (0.4ms) ROLLBACK
12:09:10 web.1 | ↳ app/controllers/api/reactions_controller.rb:64
12:09:10 web.1 | Completed 500 Internal Server Error in 21ms (ActiveRecord: 8.8ms)