2016-08-04 21 views
-1

ich bin neuling und learning rails ich habe mein aws-konto eingerichtet, einen bucket und IAM erstellt. Ich habe auch die erforderlichen Richtlinien an meine IAM angehängt. Ich kann jedoch kein Bild hochladen.rails tutorial kapitel 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 

diese meine Protokolle sind:
enter image description here

bearbeitet, das ist mein 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

+0

es sieht aus wie ein Grundsatzproblem auf AWS. Als ich dieses Tutorial befolgte, erinnere ich mich daran, dass ich eine Gruppe erstellt, ihr die erforderlichen Richtlinien zugewiesen und dann einen bestimmten Benutzer (von der App verwendet) zur Gruppe hinzugefügt habe. Wie auch immer, bitte fügen Sie Ihrer Frage den 'microprosts_controller.rb' hinzu, damit wir die Erstellungsaktion überprüfen können. – davideghz

+0

Je nachdem, welche AWS-Region Sie verwenden, müssen Sie möglicherweise '' region => ENV ['S3_REGION'] 'zu Ihrem' carrier_wave.rb'-Initialisierer hinzufügen, im 'config.fog_credentials'-Hash. – davideghz

+0

Ihr Controller sieht gut aus. Haben Sie versucht, die Gebietskonfiguration zu fog_credentials hinzuzufügen? – davideghz

Antwort

0

ich mein Problem herausgefunden, war es bei Heroku. Meine Konfiguration vars S3_BUCKET war eigentlich S3__BUCKET, alberne mich. THanks dave