2016-04-04 6 views
0

Haben Sie eine App mit Rails/AWS S3 Speicher & Büroklammer Gem. Ermöglicht Benutzern das Hochladen von Logos, funktioniert einwandfrei, zeigt Mages jedoch nicht korrekt an. Ich bekomme den Namen des Bildes. Ich habe eine image_url hinzugefügt, die die korrekte URL anzeigt, die von amazon s3 hochgeladen wurde. und es erscheint auch in der Rubin-Konsole.Rails4.2: Bilder nicht mit Aws S3/Paperclip Gem

2.0.0-p247 :001 > Job.last.image.url 
    Job Load (0.9ms) SELECT "jobs".* FROM "jobs" ORDER BY "jobs"."id" DESC LIMIT 1 
=> "http://s3.amazonaws.com/jXXXXX/jobs/images/000/000/011/original/g 

Amazon s3 Bucket Berechtigungen wurden festgelegt, damit jeder sehen kann. Bild meiner params Methode

Einstellungen in application.rb Datei hinzugefügt haben

require File.expand_path('../boot', __FILE__) 

require 'rails/all' 

# Require the gems listed in Gemfile, including any gems 
# you've limited to :test, :development, or :production. 
Bundler.require(*Rails.groups) 

module Job1 
    class Application < Rails::Application 
    # Settings in config/environments/* take precedence over those specified here. 
    # Application configuration should go into files in config/initializers 
    # -- all .rb files in that directory are automatically loaded. 

    # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. 
    # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. 
    # config.time_zone = 'Central Time (US & Canada)' 

    # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. 
    # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] 
    # config.i18n.default_locale = :de 


    # Do not swallow errors in after_commit/after_rollback callbacks. 
    config.active_record.raise_in_transactional_callbacks = true 
    config.paperclip_defaults = { 
     storage: :s3, 
     s3_region: 'us-west-2', 
     s3_credentials:{ 
      bucket: ENV['AWS_BUCKET'], 
      access_key_id: ENV['AWS_ACCESS_KEY_ID'], 
      secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'] 
     } 
    } 
    end 
end 

_job.html.erb

<ul id="timeline"> 
    <a href="#"> 
    <li class="listing clearfix"> 
     <div class="image_wrapper"> 
      <%= link_to job_path(job) do %> 
      <%= image_tag job.image.url(:original), class: "img-responsive" %> 
      <% end %> 
      <%= job.image.url(:original) %> 
     </div> 
     <div class="info"> 
      <span class="job_title"><%= link_to job.title, job_path(job) %></span> 
      <span class="job_info"><%= job.company %><span>&bull;</span> New York <span> 
      &bull;</span>Posted <%= time_ago_in_words(job.created_at) %> ago</span> 
     </div> 
      <span class="job_type full_time"> Full-Time</span> 
     </li> 

     </a> 

    </ul> 

.env file 

AWS_BUCKET=joXXXXX 
AWS_ACCESS_KEY_ID=AXXXXXXXXXXXXXXTFFQ 
AWS_S3_REGION=us-west-2 
AWS_SECRET_ACCESS_KEY=yXXXXXXXXXF+gjekFrVz1rG 

die URL im Browser hinzugefügt und bekam diese

PermanentRedirect Der Bucket, auf den Sie zugreifen möchten, muss über den angegebenen Endpunkt angesprochen werden. Bitte senden Sie alle zukünftigen Anforderungen an diese endpoint.jXXXXXXjXXXXXX.s3.amazonaws.com79XXXXXXZiMAI/J3XXXXXXI2VylhR7Ch3 +/Pi + J68gcQ =

aber haben die Erlaubnis

+0

nach dem Ausführen von 'Job.last.image.url' es gibt Ihnen url können Sie auf Browser-URL kopieren und und überprüfen Sie es selbst, um sicherzustellen, dass es in den Lasten Browser. – 7urkm3n

+0

Ja, eine Fehlermeldung bezüglich der Endpunkte erhalten – Neil

+0

Haben Sie Ihren AWS-Bucket überprüft? Hat es hochgeladen? Überprüfen Sie auch Bucket-Berechtigungen. – 7urkm3n

Antwort

0

Der Endpunkt Fehlermeldung sagt auf Amazon S3 aktualisiert:

PermanentRedirectThe Eimer Sie versuchen, auf den angegebenen Endpunkt zuzugreifen. Bitte senden Sie alle zukünftigen Anforderungen an diese endpoint.jXXXXXX jXXXXXX.s3.amazonaws.com 79XXXXXXZiMAI/J3XXXXXXI2VylhR7Ch3 +/Pi + J68gcQ =

Ihre URL ist:

s3.amazonaws.com/jXXXXX/jobs/images/

Aber es ist zu erwarten:

jXXXXXX.s3.amazonaws.com

Sie müssen den Endpunkt auf dem Büroklammer Standardwerte hinzufügen mit dem s3_host_name var.

config.paperclip_defaults = { 
    s3_host_name: "s3-#{ENV['AWS_REGION']}.amazonaws.com", } 

Mehr dazu: aws documentation

Verwandte Themen