ruby on rais でアプリを開発しています。
OSはMacです。
プロフィール画像を保存するのに、
S3に保存できるように設定しようとしていますが、
ArgumentError in UsersController#update
is not a recognized provider
が出ます。
原因を検索してもわからず、
困っています。
を見ながら進めました。
AvatarUploader
1notebook/app/uploaders 2 3class AvatarUploader < CarrierWave::Uploader::Base 4 include CarrierWave::RMagick 5 6 # S3にアップロードする場合 7 if Rails.env.production? || Rails.env.staging? 8 storage :fog 9 else 10 storage :fog 11 end 12 13 # S3のディレクトリ名 14 def store_dir 15 "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 16 end 17 18 # デフォルト画像は700x700に収まるようリサイズ 19 process :resize_to_limit => [700, 700] 20 21 # サムネイル画像 22 version :thumb do 23 process resize_to_fill: [100, 100] 24 end 25 26 # 許可する画像の拡張子 27 def extension_whitelist 28 %w(jpg jpeg gif png) 29 end 30 31 # 保存するファイルの命名規則 32 def filename 33 "something.jpg" if original_filename 34 end 35 36 protected 37 # 一意となるトークンを作成 38 def secure_token 39 var = :"@#{mounted_as}_secure_token" 40 model.instance_variable_get(var) or model.instance_variable_set(var, SecureRandom.uuid) 41 end 42end 43
CarrierWave
1notebook/config/initializers 2 3CarrierWave.configure do |config| 4 config.fog_credentials = { 5 provider: 'AWS', 6 aws_access_key_id: ENV['####キー入れました####'], 7 aws_secret_access_key: ENV['####キー入れました####'], 8 region: ENV['us-east-2'], 9 path_style: true 10 } 11 config.fog_public = true 12 config.fog_attributes = {'Cache-Control' => 'public, max-age=86400'} 13 14 config.remove_previously_stored_files_after_update = false 15 16 config.fog_directory = ENV['AWS_S3_BUCKET'] 17 config.asset_host = ENV['AWS_S3_URL'] 18end 19# 日本語の文字化けを防ぐ 20CarrierWave::SanitizedFile.sanitize_regexp = /[^[:word:].\-+]/
usercontroller
1 2notebook/app/controllers/users 3 4class UsersController < ApplicationController 5 6 7 def update 8 @user = User.find(params[:id]) 9 @user.update(params.require(:user).permit(:name, :profile,:avatar,:email)) 10 redirect_to("/users/#{@user.id}") 11 end 12 13 14end 15 16
edithtml
1 2notebook/app/views/users 3 4 <div class="form-body"> 5 <% @user.errors.full_messages.each do |message| %> 6 <div class="form-error"> 7 <%= message %> 8 </div> 9 <% end %> 10 <%= form_for @user do |f| %> 11 <p >名前</p> 12 <%= f.text_field :name, :class => "form-control my-form" %> 13 <p>メール</p> 14 <%= f.text_field :email, :class => "form-control my-form" %> 15 <div class="circle-avatar"> 16 17 <% if current_user.persisted? && current_user.avatar? %> 18 <%= image_tag current_user.avatar.to_s, class: 'avatar_present_img' %> 19 20 <label> 21 <%= f.check_box :remove_avatar %> 画像を削除</label> 22 <% else %> 23 <%= image_tag 'a-logo.gif', class: 'avatar_present_img' %> 24 <!-- classを追加 --> 25 <%= f.hidden_field :avatar_cache %> 26 <% end %> 27 <%= f.file_field :avatar, id: 'post_img' %> 28 <!-- idを追加 --> 29 </div> 30 <p>プロフィール</p> 31 <!-- name属性を設定してください --> 32 <%= f.text_area :profile, :class => "commentForm_textarea" %> 33 <input type="submit" value="保存"> 34 <!-- endを追加してください --> 35 <% end %> 36 </div>
アクセスキーなども入力したのですが、
うまくいきません
アプリ開発初めてなので、
回答がすぐ理解できるか自信がありません。
申し訳ございませんが、
よろしくお願いいたします。
どなたかご教授いただけたらと思います。
回答3件
あなたの回答
tips
プレビュー