2016-08-28 5 views
0

Vorwort: Ich bin ein REAL Schienen Neuling. Ich entwickle damit meine erste Webanwendung und daher sind selbst grundlegende Konzepte für mich schwer zu verstehen.Fragen Sie nach Anhang auf Formular (Paperclip)

Thay Having said, mein Problem:

Ich plane Büroklammer zu verwenden (und Büroklammer nur) pdfs speichern in meine Anwendungen (da ich die pdfs ich erwarten rund 0,5 MB sein). Das Tutorial auf PaperClips Github hat mir nicht eine Sache klar gemacht:

  • Wie frage ich (und tatsächlich speichern) einen Anhang in meinem Formular?

Vielen Dank, ich konnte diese beiden Probleme nicht alleine lösen.

EDIT: Das ist, was ich versuchte

<div class="field"> 
    <%= f.label :pdf %> 
    <%= f.file_field :pdf %> 
</div> 

Die Schaltfläche eine Datei dort zu befestigen ist, aber es scheint, dass es einfach nicht funktioniert und die Datei wird nicht gespeichert.

EDIT2: Nach der vorgeschlagenen Lösung speichert mein Server in der Tat die PDFs, die ich an mein Formular anschließe.

Jetzt möchte ich verstehen, warum die zugehörige URL (aus einem PDF) mich direkt zu einer Seite schickt, wo das System fragt, wo das PDF zu speichern ist (aka es wird automatisch heruntergeladen). Hier geht der zugehörige Teil des Codes:

<td><%= (link_to 'Related file', task.pdf.url, :target => "_blank") if task.pdf.exists? %></td> 

Dieser befindet sich innerhalb app/views/Aufgaben/index.html.erb

Antwort

1

Ihre Migration PDF-Anhang zu einer Tabelle hinzuzufügen (In diesem Beispiel I die Anlage PDF zu einer Documents Tabelle am Zusatz) soll wie folgt aussehen:

class AddAttachmentPdfToDocuments < ActiveRecord::Migration 
    def self.up 
    change_table :documents do |t| 
     t.attachment :pdf 
    end 
    end 

    def self.down 
    remove_attachment :documents, :pdf 
    end 
end 

Sie müssen rake db:migrate auszuführen, nachdem Sie diese Migration erstellen, so dass die PDF-Spalte wird auf die Tabelle tatsächlich hinzugefügt.

Ihr Modell Code für Büroklammer (Noch einmal, ich bin mit einem documents Modell zum Beispiel) wie folgt aussehen sollte:

has_attached_file :pdf, :use_timestamp => false 
validates_attachment_content_type :pdf, :content_type => ['application/pdf', 'text/plain'] 

Um ein pdf hinzuzufügen, müssen Sie eine Eingabe in Ihrem Formular hinzufügen, zum Beispiel ist dies die Schleife für einen pDF-Anhang zu fragen, zu verwenden:

<%= form_for @document do |f| %> 

    <%= f.input :title, label: "Title" %> 

    <%= f.input :pdf, label: "Upload document:" %> 

    <%= f.button :submit %> 

<% end %> 

In Ihrem controler (wieder documents als controler verwendet wird), um die params :pdf übergeben müssen. Ihre private Methode etwas aussehen würde:

def documents_params 
    params.require(:document).permit(:title, :pdf) 
end 

Hinweis, ich bin mit document wie mein Controller, Modell, bilden usw., also, wenn Sie einen anderen Namen verwenden, müssen Sie das ändern. Wenn Sie Probleme haben, lassen Sie einen Kommentar und ich werde versuchen, zu helfen

+0

Das hat es sicherlich getan! Ich verstehe noch nicht alles, was ich getan habe, aber danke, ich werde dahin kommen. BEARBEITEN: Noch eine Frage: Meine 'Ansicht' hat jetzt einen URL-Link zu meinem angehängten PDF. Das einzige Problem ist, wenn ich es anklicke, öffnet es einen neuen Tab, der mich bereits nach der save pdf fragt. Wie kann ich es mir nur anzeigen lassen, ohne nach Download oder Speichern zu fragen? –

+0

Ich bin mir nicht sicher, was du fragst. Möchten Sie das PDF direkt herunterladen, anstatt es in einem neuen Tab zu öffnen? –

+0

Ganz im Gegenteil, ich möchte es in einem neuen Tab öffnen und genau das. In seiner tatsächlichen Form öffnet es sich bereits mit dem "Datei speichern" -Dialog, wo Sie den Speicherort auswählen, um zu speichern. –

Verwandte Themen