Pada umumnya website memiliki fungsi CRUD (Create, Read, Update, Delete). Create dan Read dapat dilakukan dengan menambahkan / mengupdate data melalui form pada aplikasi website yang dibuat. Bagaimana jika data yang akan diinput sangat banyak seperti 1000 data? Bagaimana jika data harus dimasukkan satu per satu, pusing bukan?
Sebagai solusi, di Ruby on Rails kita dapat memasukkan banyak data dalam satu langkah mudah dengan menambahkan fitur import pada aplikasi yang dibuat. Untuk menambahkan fitur ini, dibutuhkan gem bantuan yaitu gem ROO.
Sebelum ke langkah selanjutnya, sebagai catatan tutorial ini adalah lanjutan dari tutorial Membuat File Export dengan Format CSV & XLS
Bagaimana cara menggunakan gem ROO? Berikut langkah - langkanya :
1. Pada Gemfile, tambahkan baris berikut
gem 'roo', '1.13.2'
2. Pada console/terminal, ketikkan baris berikut
bundle install
3. Jika Gem ROO sudah terinstall, lalu tambahkan link untuk melakukan import data. Link import akan disimpan pada halaman index. Tambahkan kode berikut pada halaman index.
=< link_to 'Import Item', import_items_items_path
Ketika merefresh halaman index item, akan muncul error sebagai berikut.
Hal ini terjadi karena kita belum menambahkan link path tersebut pada route. Pada stores/app/config/routes.rb , tambahkan baris berikut.
4. Buka items_controller.rb, tambahkan method import_form serta import.
5. Biarkan kedua method tersebut, selanjutnya kita membuat tampilan untuk form import data. Pada app/views/items tambahkan file dengan nama import_items.html.slim, serta tambahkan kode berikut.
6. Kembali ke items_controller.rb, pada method import tambahkan kode berikut.
Pada file config/application.rb, tambahkan baris kode berikut
require 'roo'
7. Pada model item (app/models/item.rb), tambahkan kode berikut
Pada console akan terlihat proses data saat import data
Kemudian lakukan testing. Kita akan mencoba untuk memasukkan data dari file .xlsx, seperti berikut
name
|
unit
|
price
|
Product 1
|
Renceng
|
1000
|
Product 2
|
Botol
|
2500
|
Product 3
|
Pak
|
10300
|
Product 4
|
Renceng
|
1000
|
Product 5
|
Botol
|
2500
|
Product 6
|
Pak
|
10300
|
Dalam console dapat terlihat proses import data seperti berikut
Data berhasil diimport, halaman index item pada website akan muncul seperti ini
Kalian akan kembali ke halaman import data dengan message bahwa import gagal dilakukan, jika menekan tombol "import" tanpa memasukkan file data/gambar terlebih dahulu.