-1
私は初心者とラーニングレイルです 私はawsアカウントをセットアップし、バケットとIAMを作成しました。私はIAMに必要な方針を添付しました。 しかし、画像をアップロードできません。railsチュートリアルの章13.4.4
if Rails.env.production?
CarrierWave.configure do |config|
config.fog_credentials = {
# Configuration for Amazon S3
:provider => 'AWS',
:aws_access_key_id => ENV['S3_ACCESS_KEY'],
:aws_secret_access_key => ENV['S3_SECRET_KEY']
}
config.fog_directory = ENV['S3_BUCKET']
end
end
class PictureUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
process resize_to_limit: [400, 400]
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
これらは私のログです:
が編集した、これは私のmicropost_controller.rbある
class MicropostsController < ApplicationController
before_action :logged_in_user, only: [:create, :destroy]
before_action :correct_user, only: [:destroy]
def create
@micropost = current_user.microposts.build(micropost_params)
if @micropost.save
flash[:success] = "Micropost created!"
redirect_to root_url
else
@feed_items = []
render 'static_pages/home'
end
end
def destroy
@micropost.destroy
flash[:success] = "Micropost deleted"
redirect_to request.referrer || root_url
end
private
def micropost_params
params.require(:micropost).permit(:content, :picture)
end
def correct_user
@micropost = current_user.microposts.find_by(id: params[:id])
redirect_to root_url if @micropost.nil?
end
end
THX
AWSのポリシー上の問題のようです。私はそのチュートリアルに続いて、グループを作成し、必要なポリシーを割り当ててから、グループに特定のユーザー(アプリケーションで使用)を追加したことを思い出します。とにかく、plsはあなたの質問に 'microposts_controller.rb'を追加して、作成アクションを調べることができます。 – davideghz
また、使用しているAWSリージョンによっては、 'config.fog_credentials'ハッシュの' carrier_wave.rb'イニシャライザに ':region => ENV ['S3_REGION']'を追加する必要があります。 – davideghz
あなたのコントローラーは見栄えが良いです。 fog_credentialsにリージョン設定を追加しようとしましたか? – davideghz