Số 10, Ngõ 12, Khuất Duy Tiến, Nhân Chính, Thanh Xuân, TP Hà Nội
096 803 1388

Hướng dẫn cài đặt và sử dụng gem paperclip trong Ruby on Rails

Paperclip là một gem trong Ruby on rails, được hiểu như một chiếc kẹp giấy, mỗi một đối tượng sẽ được đính với một hoặc nhiều hình ảnh như là một thuộc tính đơn giản của nó. Hình ảnh được lưu vào trong project và được tham chiếu đến mỗi khi gọi đến đối tượng chứa nó

  1. Môi trường yêu cầu
    Đầu tiên, ta cần có môi trường là công cụ xử lý ảnh ImageMagick. Công cụ này giúp convert ảnh để đồng nhất kích thước và lưu vào đúng đường dẫn.Dowlnoad ImageMagick tại ImageMagick
    Sau khi cài đặt ImageMagick, ta cần thiết lập môi trường của Ruby, vào config/environments/development.rb ghi thêm dòng:

    Paperclip.options[:command_path] = "(url)" 

    trong đó url là đường dẫn cài đặt ImageMagick của bạn, ví dụ “C:\Program Files\ImageMagick-6.9.6-Q8”.

  2. Cài đặt gem Paperclip

    Để sử dụng, ta cần phải khai báo gem Paperclip vào Gemfile:

    gem "paperclip", "~> 5.0.0"

    hoặc

    gem "paperclip", git: "git://github.com/thoughtbot/paperclip.git" 

    để lấy gem mới nhất.

    Dùng lệnh bundle install để download và sử dụng gem.

  3. Dùng Paperclip cho một đối tượng
    Tạo một đối tượng có tham chiếu file bằng scaffold:

    rails generate scaffold user name:string avatar:attachment

    Lệnh này được hiểu là sinh đối tượng User có thuộc tính ‘name’ kiểu String và ‘image’ kiểu tệp đính kèm.

    Gọi lệnh

    rake db:migrate

    để tạo đối tượng trên database.

    Đối tượng có đính kèm với một ảnh bằng Paperclip cần phải cài đặt nó trong Models:

    class User < ApplicationRecord
      has_attached_file :avatar, styles: { medium: "300x300>", thumb: "100x100>" }, default_url: "/images/:style/missing.png"
      validates_attachment_content_type :avatar, content_type: /\Aimage\/.*\z/
    end

    Để thực hiện thêm được ảnh từ máy cho đối tượng, ta cần thêm trường upload ảnh trong View, trong file form thay cho mặc định:

    <%= f.input :avatar, as: :file %>

    Khi xác nhận thêm mới, ảnh sẽ mặc định đưa vào folder

    /system/users/avatars/000/000/x/…

    Với x là id tự sinh của đối tượng, ảnh sẽ được định dạng bằng ImageMagick với các kích thước đã định dạng trong Models. Khi dùng  đến đối tượng, ruby sẽ chiếu đến folder chứa ảnh của đối tượng đó, xem ảnh bằng file index bằng cách thêm image_tag trong thuộc tính Image của user:

    <%= image_tag user.avatar.url(:thumb) %>

    Như vậy chúng ta upload và hiển thị được ảnh của đối tượng bằng gem Paperclip cảu Ruby on Rails

— THINHLV —

Để lại phản hồi