2015-07-18 3 views
5

In der Produktion werden die richtigen Pfade zu meinen Bildern nicht mit dem Image-Tag aufgerufen, und der md5-Fingerabdruck wird nicht hinzugefügt. Die Bildnamen (z. B. "pretty_picture.jpg") werden in der Datenbank gespeichert. Die Vorkompilierungsdateien befinden sich alle im Öffentlichen Ordner einschließlich der Manifestdatei.Schienen 4.2: Bildpfad und Fingerabdruck nur hinzugefügt, wenn config.assets.compile = true

Wenn mit image_tag genannt:

image_tag @test_question.question.image 

ich:

<img src="/images/pretty_picture.jpg"> 

Wenn ich config.assets.compile = true in production.rb gesetzt das Bild wiedergegeben wird, und ich bekomme:

<img src="/assets/images/pics/pretty/pretty_picture-e0df5012b6930cda4efaa866af22a63f.jpg" > 

Meine Hack-Lösung ist zu verwenden (in HAML)

Ich
%img{src: "/assets/"+Rails.application.assets.find_asset(@test_question.question.image).digest_path} 

In production.rb haben

config.assets.digest = true 
config.assets.enabled = true 
config.serve_static_files = false 
config.assets.compile = false 

Einstellung der config.assets.compile auf true in der Produktion wird nicht empfohlen. Dies scheint ein sehr seltsames Verhalten im Namen von Kettenrädern und der Asset-Pipeline zu sein. Irgendeine Idee, was ist falsch an der Verwendung von image_tag hier?

+0

Ich habe das gleiche Problem - danke, dass Sie diese Hack-Lösung gefunden haben - es bringt mir zumindest einen funktionierenden Code. –

+0

Gab es eine Nicht-Hack-Lösung für dieses Problem? Ich habe das gleiche Problem. – user2012677

Antwort

1

In der Produktion sollten Sie die Vermögenswerte vorkompilieren vor dem Starten des Servers mit dem folgenden Befehl (und automatisieren sie es Sie bereitstellen jedes Mal zu tun):

rake assets:precompile RAILS_ENV="production" 

und halten config.assets.compile = false in Ihrem production.rb. Überprüfen Sie die Asset Pipeline Guide.

+0

Ja, die Assets werden für die richtige Umgebung vorkompiliert und mit Capistrano auf dem Server bereitgestellt. Wie im Fragestamm angegeben, sind die Assets im öffentlichen Ordner vorhanden, wie sie sein sollten, und config.assets.compile = false. Die Bilder werden in der Ansicht nicht korrekt referenziert. – user3291025

Verwandte Themen