Carrierwave Gem per il caricamento di file in Rails

Se stiamo creando un'applicazione web, una delle funzionalità che vorremmo sicuramente è la funzione di caricamento delle immagini. In effetti, il caricamento delle immagini è una caratteristica importante senza la quale le applicazioni moderne non possono semplicemente essere immaginate. E non solo, è ancora più importante considerando il fatto che anche il caricamento delle immagini gioca un ruolo nell’ottimizzazione dei motori di ricerca. CarrierWave gem può essere integrato con le nostre applicazioni Rails e fornisce un modo semplice ed estremamente flessibile per caricare file.

Configurazione dell'applicazione Rails:

Per configurarlo nella nostra applicazione Rails, dopo aver creato un nuovo progetto, dobbiamo aggiungere 2 gemme nel file gem. Il primo è lo stesso CarrierWave e il secondo è la gemma bootstrap-sass (opzionale).
gemma 'onda portante', '~> 0.9'
gemma 'bootstrap-sass', '~> 2.3.2'

Installazione:

Eseguiamo l'installazione in bundle e quindi creiamo i nostri modelli e controller per la nostra applicazione. installazione del pacchetto
rails g model Nome modello campo:tipodati =>allegato:stringa
rake db:migrare
rails g controller controllername action => indice new create destroy Ora dobbiamo creare un uploader. Gli uploader dicono a carrierwave come gestire il file una volta caricato => rails g uploader attach Creerà una cartella denominata uploaders nella cartella dell'app con un file attach_uploader.rb.

Come ci giochi:

app/uploaders/attachment_uploader.rb
class Caricatore allegati < CarrierWave::Uploader::Base storage :file def store_dir "uploads/#{model.class.to_s.underscore}/#{montato_as}/#{model.id}" end end
Ora nel nostro controller dei curriculum e aggiungi del codice per gestire l'elaborazione del modulo:
class ResumesController < ApplicationController def indice @resumes = Resume.all end def new @resume = Resume.new end def create @resume = Resume.new(resume_params) if @resume.save reindirizzamento_to curriculums_path, nota: "Il curriculum #{@resume .name} è stato caricato." else render "new" end end def destroy @resume = Resume.find(params[:id]) @resume.destroy reindirizza_to curriculums_path, nota: "Il curriculum #{@resume.name} è stato eliminato." end private def curriculum_params params.require(:resume).permit(:name, :attachment) end end
Ora dobbiamo impostare i nostri file di visualizzazione:
Per new.html.erb
<%= form_for @resume, html: { multipart: true } do |f| %> <%= f.etichetta :nome %> <%= f.campo_testo :nome %> <%= f.etichetta :allegato %> <%= f.campo_file :allegato %> <%= f.submit “Salva ”, classe: “btn btn-primary” %> <% end %>
 
Per index.html.erb
<% @resumes.each fa |resume| %> <% fine %>
Nome Link per scaricare
<%= curriculum.nome %> <%= link_a “Scarica curriculum”, curriculum.allegato_url %> <%= button_to “Elimina”, curriculum, metodo: :delete, classe: “”, conferma: “Sei sicuro di voler eliminare #{resume.name}?” %>
 
app/uploaders/attachment_uploader.rb
class AnnexUploader < CarrierWave::Uploader::Base storage :file def store_dir "uploads/#{model.class.to_s.underscore}/#{montato_as}/#{model.id}" end def extension_white_list %w(pdf doc htm html docx) fine fine

Riferimenti:

Github: https://github.com/carrierwaveuploader/carrierwave Gemme di rubino: https://rubygems.org/gems/carrierwave/versions/0.11.2 Railcast: http://railscasts.com/episodes/253-carrierwave-file-uploads

Iscriviti per gli ultimi aggiornamenti

Articoli correlati

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

it_ITItalian