Ich habe eine Controller-Aktion, die es einem Benutzer ermöglicht, eine Datei mit der Erweiterung PPT herunterzuladen. Es ist nicht wirklich eine Powerpoint-Binärdatei, sondern nur ein XML-Format, das Powerpoint lesen kann. Die Datei wird von der Show-Aktion eines Controllers mit dem Namen ElementsController heruntergeladen, aber die Show-Aktion ist nicht wirklich im Controller definiert, es gibt jedoch eine Template-Datei dafür in app / views / elements / show.ppt.builder. Ich habe den Mime :: Type in config / initializers / mime_types.rb als solche registriert:
Mime::Type.register "multipart/related", :ppt
und die Datei wird ordnungsgemäß heruntergeladen und mit PowerPoint auf einem Windows-System geöffnet. Das Problem ist jedoch der Dateiname. Der Name der Datei ist 3.ppt, wobei drei der ID-Parameter in der URL ist. Ich würde gerne wissen, ob es eine Möglichkeit gibt, den Dateinamen etwas beschreibender als 3.ppt.
zu setzenthx,
-C
Sie können send_data verwenden:
%Vor%Ein weiterer Vorteil ist, dass Sie x-sendfile verwenden können, so dass Sie nicht von mongrel / thin erwartet werden, während der Client die Daten herunterlädt.
Eine andere Möglichkeit wäre eine Route wie:
/elements/3/files/foo.ppt
Dann können Sie in Ihrer show-Methode für den FilesController den ID-Parameter senden.
Ok. Dies ist eine Antwort auf eine sehr alte Frage, aber ab Rails 3.2 ist der einfachste Weg, es wie folgt zu setzen:
%Vor%Tags und Links ruby-on-rails controller download