Carrierwave Gem für Datei-Uploads in Rails

Wenn wir eine Webanwendung erstellen, ist eine der Funktionen, die wir uns auf jeden Fall wünschen würden, die Funktion zum Hochladen von Bildern. Tatsächlich ist das Hochladen von Bildern eine wichtige Funktion, die aus modernen Anwendungen nicht mehr wegzudenken ist. Und nicht nur das, es ist umso wichtiger, wenn man bedenkt, dass das Hochladen von Bildern auch eine Rolle bei der Suchmaschinenoptimierung spielt. CarrierWave gem kann in unsere Rails-Anwendungen integriert werden und bietet eine einfache und äußerst flexible Möglichkeit, Dateien hochzuladen.

Einrichtung der Rails-Anwendung:

Um dies in unserer Rails-Anwendung einzurichten, müssen wir nach dem Erstellen eines neuen Projekts zwei Gems zur Gem-Datei hinzufügen. Das erste ist CarrierWave selbst und das zweite ist das Bootstrap-Sass-Juwel (optional).
gem 'carrierwave', '~> 0.9'
gem 'bootstrap-sass', '~> 2.3.2'

Installation:

Wir führen die Bundle-Installation aus und erstellen dann unsere Modelle und Controller für unsere Anwendung. Bundle-Installation
Schienen G-Modell Modellname Feld:Datentyp =>Anhang:Zeichenfolge
rake db:migrieren
Rails G Controller Controllername Aktion => Index Neu Erstellen Zerstören Jetzt müssen wir einen Uploader erstellen. Die Uploader teilen Carrierwave mit, wie mit der Datei umgegangen werden soll, nachdem sie hochgeladen wurde => Rails G Uploader-Anhang Es wird ein Ordner mit dem Namen „Uploaders“ im App-Ordner mit der Datei „attachment_uploader.rb“ erstellt.

So spielt man damit:

app/uploaders/attachment_uploader.rb
class Attachment Uploader < CarrierWave::Uploader::Base storage :file def store_dir "uploads/#{model.class.to_s.underscore}/#{montiert_as}/#{model.id}" Ende Ende
Fügen Sie nun in unserem Lebenslauf-Controller etwas Code für die Formularverarbeitung hinzu:
class ResumesController < ApplicationController def index @resumes = Resume.all end def new @resume = Resume.new end def create @resume = Resume.new(resume_params) if @resume.save weitergeleitet_zu resumes_path, Hinweis: „Der Lebenslauf #{@resume .name} wurde hochgeladen.“ else render „new“ end end def destroy @resume = Resume.find(params[:id]) @resume.destroy restart_to resumes_path, Hinweis: „Der Lebenslauf #{@resume.name} wurde gelöscht.“ end private def resume_params params.require(:resume).permit(:name, :attachment) end end
Jetzt müssen wir unsere Ansichtsdateien einrichten:
Für new.html.erb
<%= form_for @resume, html: { multipart: true } do |f| %> <%= f.label :name %> <%= f.text_field :name %> <%= f.label :attachment %> <%= f.file_field :attachment %> <%= f.submit „Speichern “, Klasse: „btn btn-primary“ %> <% end %>
 
Für index.html.erb
<% @resumes.each macht |resume| %> <% Ende %>
Name Download-Link
<%= Lebenslauf.Name %> <%= link_to „Lebenslauf herunterladen“, resume.attachment_url %> <%= button_to „Löschen“, Lebenslauf, Methode: :delete, Klasse: „“, bestätigen: „Sind Sie sicher, dass Sie #{Lebenslauf.Name} löschen möchten?“ %>
 
app/uploaders/attachment_uploader.rb
class AttachmentUploader < CarrierWave::Uploader::Base storage :file def store_dir "uploads/#{model.class.to_s.underscore}/#{montiert_as}/#{model.id}" end def extension_white_list %w(pdf doc htm html docx) Ende Ende

Verweise:

Github: https://github.com/carrierwaveuploader/carrierwave RubyGems: https://rubygems.org/gems/carrierwave/versions/0.11.2 Railcasts: http://railscasts.com/episodes/253-carrierwave-file-uploads

Abonnieren Sie die neuesten Updates

zusammenhängende Posts

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

de_DEGerman