PaperClip ändernde URL / Pfad

7

Ich verwende Rails 4 Ruby 2.1.1

Ich muss meine: url,: path,: default ändern, damit ich meine Beispiel-data.csv-Datei im Controller-Verzeichnis erreichen kann. Momentan speichert es meine example_data.csv Datei in public/origin/example_data.csv . Aber ich möchte meine example_data.csv Datei im / controllers / original Verzeichnis gespeichert haben.

Das habe ich bisher.

%Vor%

Wenn ich den Code ausführe, wird mein Code nicht in das Controller-Verzeichnis geschrieben.

    
user3487016 02.04.2014, 16:12
quelle

1 Antwort

29
Mit

Paperclip können Sie Dateien an Ihrem bevorzugten Ort hochladen. Sie können die Optionen wie :url , :path , :default_url beliebig ändern.

Bevor wir weiter gehen, lassen Sie mich ein wenig über die Möglichkeiten dieser Optionen sprechen:

%Vor%

Lassen Sie uns hier Schritt für Schritt gehen:

Ihre erste Anforderung wie folgt:

  

Ich muss meine: url,: path,: default_url ändern, damit ich meine example-data.csv-Datei im Controller-Verzeichnis erreichen kann.

Ja, es ist möglich. Ihre aktuelle Konfiguration, wie unten gezeigt, würde ohne Änderungen funktionieren.

%Vor%

ABER da gibt es einige Fehler, die ich hervorheben möchte. Wenn Sie eine Datei hochladen, wird sie bei der obigen Konfiguration im Verzeichnis Anwendungsordner / controllers / original / original gespeichert. Der letzte Teil des Pfades / original wird aufgrund von /:style in :path -Option angegeben. Da Sie für die Anlage keine :styles -Option angegeben haben, wird nur der Standardstil, d. H.% Co_de%, erstellt. Bitte beachten , dass sich der Ordner controllers auf der Anwendungsstammebene befindet, die ein nicht öffentlich zugänglicher -Ordner ist.

Nur die Dateien, die unter public (und ihre Nachkommen) hochgeladen wurden, sind über den Webbrowser zugänglich. Wenn Sie nicht planen, die hochgeladenen Dateien irgendwo in Ihrer Ansicht anzuzeigen und / oder nur für eine Hintergrundverarbeitung benötigen, dann erfordert Ihre aktuelle Konfiguration keine Änderung. Es wird gut funktionieren, wie es ist.

Wenn Sie dies erreichen wollten, sind keine weiteren Maßnahmen erforderlich.

ABER Wenn Sie die hochgeladene Datei in einer Webanwendung anzeigen oder darauf zugreifen möchten, müssen Sie sie in den Ordner original einfügen, auf den über den Browser zugegriffen werden kann. In diesem Fall würde Ihr Code einige Änderungen erfordern.

%Vor%

HINWEIS: Ich habe public aus dem Pfad entfernt, da /original den Ordner :style erstellen würde. Andernfalls wären die Ordner original

Wenn Sie eine Datei hochladen, wird sie bei der obigen Konfiguration im Verzeichnis Anwendungsordner / public / controllers / original gespeichert. Und Sie können leicht auf die hochgeladene Datei mit einem einfachen Aufruf wie /controllers/original/original/.. in Ihrer Ansicht zugreifen. Zum Beispiel, wie Sie Ihre Frage hochladen Sie eine Datei mit dem Namen @model_instance.csvdata.url , dann in Ihrer Ansicht können Sie es als verwenden:

%Vor%

erzeugt einen anklickbaren Link zur hochgeladenen Datei als:

%Vor%

HINWEIS: example_data.csv ist ein zufälliger Startwert, der an die Rails angehängt wird.

Info: default_url

%Vor%

Es ist immer eine gute Methode, die Option ?12345678 in der Konfiguration anzugeben. Der Grund dafür ist, dass der Benutzer beim Hochladen eines Datensatzes keine Datei hochlädt, aber später versucht, auf den :default_url für diesen Datensatz zuzugreifen, und dann an den in uploaded file gesetzten Link weitergeleitet wird. Beachten Sie außerdem, dass für diesen bestimmten Datensatz alle mit default_url verbundenen Spalten auf attachment gesetzt sind.

Außerdem bin ich verwirrt Warum sollten Sie den Punkt default_url auf nil setzen, wenn Sie die gleiche Datei in die Anwendung hochladen möchten . Der Standardweg besteht darin, eine Standarddatei namens example_data.csv oder missing.csv zu haben, die nicht mit Ihren hochgeladenen Dateien verknüpft ist. Bitte denken Sie daran, missing.png oder missing.csv im Ordner missing.png , d. H.% Co_de% Pfad zu platzieren. Andernfalls würde beim Klicken auf den Link ein Fehler auftreten.

    
Kirti Thorat 02.04.2014 21:06
quelle

Tags und Links