2017-12-05 2 views
0

Ich versuche eine Angular 4 App zu erstellen, die eine Rails-API zum Anzeigen und Hochladen von Bildern verwendet. um bilder mit der rails API hochzuladen, habe ich mich für carrierwave entschieden. Was ich gerne wissen würde ist, wie ich einige erste Bilder säen und die URL in der Datenbank speichern? unten ist das, was ich habeSeedbilder mit carrierwave

in meiner db.seed Datei getan
Pictures.create!(
    image: Rails.root.join("C:/Ciaran/admin/src/assets/images/test_img1.jpg").open, 
) 

jedoch, wo das Bild in meinen Schienen-app-Ordner gespeichert? Ich sehe es nirgends.

Und wenn ich die Bilder-Tabelle in MySQL für die Bildspalte inspiziert wird die gesamte URL nicht nur test_img1.jpg angezeigt? Wie kann ich die vollständige URL anzeigen lassen?

Also im Grunde, wenn jemand, der mehr über Schienen und carrierwave kennt, kann mir bitte erklären:

  1. Für die Code-Schnipsel, dass ich oben ist, dass eine Kopie des Bildes in meine Rails-Anwendung erstellen gezeigt haben? weil ich es in keinem der apps-ordner sehe, nachdem ich die datenbank angelegt habe?

  2. Warum wird die vollständige URL nicht in der Datenbanktabelle für Bilder angezeigt und wie bekomme ich die vollständige URL angezeigt, damit ich von meinem eckigen Frontend darauf zugreifen kann?

Vielen Dank für Ihre Hilfe

Antwort

0

1 - in der App-Ordner eine Datei image_uploader.rb aufgerufen werden soll. Und es sollte eine def store_dir haben, die angibt, wo Ihre Dateien gespeichert sind.

2 - weil die vollständige URL basierend auf der oben genannten Konfigurationsdatei image_uploader.rb generiert wird. Sie können die URL z. B. einfach abrufen, wenn Ihre Modellinstanzvariable @picture

@picture = Picture.first 
@picture.image.thumb.url 
lautet