Skip to content Skip to sidebar Skip to footer

How to Upload Image to Ruby on Rails

Pada tutorial kali ini, kita akan membuat upload image pada Ruby on Rail menggunakan library Carrierwave. Dengan menggunakan carrierwave, kita akan lebih mudah mengupload image baik itu menggunakan Amazon, Cloudinary, dan lain-lain.

Membuat Project

Buat project dengan nama carrierwave-case

          rail new carrierwave-example        

Lalu buat database nya dengan cara

          rail db:create && rails db:migrate        

Sampai sini kita sudah selesai dalam tahap pembuatan projectnya.

Menambahkan Carrierwave pada Gemfile

Buka Gemfile lalu masukan syntax dibawah

          # Gemfile  jewel 'carrierwave', '~> 2.0'        

Setelah ditambahkan, silahkan instal library dengan menjalankan perintah bundle install

          bundle install        

Jika tidak ada masalah sampai saat ini, berarti kita sudah berhasil menambahkan library nya.

Membuat Model

Buat model dengan nama Post

          track chiliad model Post        

Setelah itu tambahkan column pada file migration Postal service

          # db/migrate/xxxxxxxx_create_posts.rb  course CreatePosts < ActiveRecord::Migration[half-dozen.0]   def change     create_table :posts practice |t|        t.cord :title       t.string :header       t.text :desc        t.timestamps     end   end end        

Jika sudah masukan perintah dibawah ini untuk mengirimkan file migrasi ke database kalian

          rails db:migrate        

Membuat Controller

Buat controller dengan nama Post

          rails g controller Mail        

Setelah itu tambahkan activity index untuk membuat halaman root

          # app/controllers/post_controller.rb  class PostController < ApplicationController      def index          @posts = Post.all     end  finish                  

Buat file alphabetize.html.erb didalam folder app/views/post/ untuk tampilannya

          <!-- app/views/post/index.html.erb -->  <!-- menampilkan pesan observe --> <% if notice %>     <p><%= find %></p> <% finish %>  <h3>List Post</h3>  <%= link_to 'Tambah', post_new_path %>  <ul>     <% @posts.each practice |item| %>         <li>             <%= link_to item.title, post_detail_path(particular.id) %>         </li>     <% end %> </ul>        

Jangan lupa juga tambahkan url di routes.rb pada folder config/

          # config/routes.rb  Rails.awarding.routes.depict practise      root to: 'post#index', as: 'post_index'   get '/detail/:id', to: 'postal service#item', equally: 'post_detail'   get '/tambah', to: 'post#new', as: 'post_new'   postal service '/tambah', to: 'mail service#storeData', as: 'post_storedata'  end                  

Buka halaman localhost:3000 maka tampilan akan seperti ini

Membuat Uploader Carrierwave

Karena kita sebelumnya sudah menambahkan library carrierwave, sekarang kita bisa membuat uploader dengan cara

          rails g uploader Header        

dengan memberi perintah diatas, maka Runway akan membuat sebuah file uploader bernama header_uploader.rb pada folder app/uploaders/

Buka file header_uploader.rb lalu uncomment pada syntax dibawah ini

          # app/uploaders/header_uploader.rb  class HeaderUploader < CarrierWave::Uploader::Base    ..    def extension_whitelist     %w(jpg jpeg gif png)   end    ..  stop                  

Setelah itu buka model Post pada binder app/models/ dan tambahkan uploader pada cavalcade header

          # app/models/post.rb  form Post < ApplicationRecord      validates :title, presence: true     validates :header, presence: truthful     mount_uploader :header, HeaderUploader     validates :desc, presence: true      finish                  

Membuat Class Uploader

Tambahkan activeness new, storeData, dan post_params pada controller Post

          # app/controllers/post_controller.rb  form PostController < ApplicationController      ..      def new          @post = Post.new     end      def storeData          @post = Post.new(post_params)         if @mail service.salvage                         redirect_to post_index_path, notice: "Berhasil menambahkan data!"         else              render :new, alert: "Gagal menambahkan information!"         stop     terminate      private     def post_params         params.require(:post).let(:title, :header, :desc)     end end                  

Lalu buat file new.html.erb di dalam folder app/views/mail service/ untuk tampilan form nya

          <!-- app/views/post/new.html.erb -->  <%= link_to 'Kembali', post_index_path %>  <h3>Tambah Postal service</h3>  <!-- menampilkan validasi mistake --> <% if @post.errors.any? %>     <h5>         <%= pluralize(@post.errors.count, "error") %> Uppss!, tidak bisa tambah data karena :     </h5>     <ul>         <% @post.errors.full_messages.each do |msg| %>             <li><%= msg %></li>         <% cease %>     </ul> <% end %>  <%= form_with model: @post, url: post_storedata_path, local: true exercise |f| %>      <label>Title</characterization><br>     <%= f.text_field :championship, placeholder: 'title' %><br><br>      <label>Header</characterization><br>     <%= f.file_field :header %><br><br>      <label>Description</label><br>     <%= f.text_area :desc, placeholder: 'Clarification' %><br><br>      <%= f.submit 'Kirim Data' %> <% terminate %>                  

Syntax diatas akan menampilkan grade seperti dibawah ini, dan kalian bisa cek validasi nya terlebih dahulu

Apabila grade kosong maka akan tampil pesan mistake seperti ini

Jika kita mengupload file selain dari format foto maka akan menampilkan mistake seperti ini

Kenapa validasi ekstensi bisa muncul? itu karena kita sudah men-uncomment syntax pada file header_uploader.rb tadi

          # app/uploaders/header_uploader.rb  class HeaderUploader < CarrierWave::Uploader::Base of operations    ..    def extension_whitelist     %due west(jpg jpeg gif png)   terminate    ..  stop                  

Setelah paham, kalian bisa mencoba formnya

Sampai sini selesai pada bagian upload epitome, kalian bisa lihat bahwa hasil upload tersimpan pada folder public/uploads/post/header/id/namafoto

Menampilkan Image

Silahkan kalian membuat action particular di controller Post untuk menampilkan detail item postal service nya

          # app/controllers/post_controller.rb  class PostController < ApplicationController      ..      def detail          @find = Post.find(params[:id])     end      private     def post_params         ..     end finish                  

Lalu buat juga file detail.html.erb pada folder app/views/post/ untuk menampilkan particular item nya

          <!-- app/views/post/detail.html.erb -->  <%= link_to 'Kembali', post_index_path %>  <h3><%= @find.title %></h3> <img src="<%= @notice.header %>" width="300"> <p>     <%= @find.desc %> </p>                  

Setelah selesai tampilannya akan seperti ini

Mudah bukan? untuk pemanggilan foto pun cukup mudah, kita hanya perlu memanggil nama column untuk menampilkan gambar. Jika kalian masih kesulitan, silahkan tanya pada kolom komentar dibawah postingan ini. Terimakasih

talkingtonexack1985.blogspot.com

Source: https://rairizky.my.id/upload-image-pada-ruby-on-rails-menggunakan-carrierwave

ارسال یک نظر for "How to Upload Image to Ruby on Rails"