Yukk .. Membuat Aplikasi Blog dengan Ruby on Rails

Introduction:

Aplikasi blog maksudnya kita akan membuat sistem yang menyediakan sarana bagi user untuk membuat suatu tulisan (content) dan user itu maupun yang lain dapat memberikan komentar (comment) terhadap tulisan tertentu. Jadi prinsipnya kita akan menyediakan dua model yaitu model content dan model comment. Model di sini merupakan objek yang akan diterjemahkan ke database yaitu tabel contents dan tabel comments. Sedikit ribet memang di rails, terutama konvensi ketika model single (content) ditranslasikan ke tabel menjadi plural/jamak (contents). Kita menggunakan relasi one-to-many dimana satu content memiliki lebih dari satu comment, sementara itu comment harus dimiliki (has_belongs) oleh suatu content.

Tutorial:

Arahkan ke direktori dimana aplikasi rails kita akan kita letakkan. Buat program baru, misalnya kita beri nama blog.

rails new blog

Artinya kita akan membuat suatu project dengan nama blog. Jika Anda menggunakan database postgresql tambahkan –d postgressql di sebelah kanan blog. Pindahkan folder pada command prompt Anda ke folder blog yang baru saja terbentuk (cd blog). Buat model content dengan atribut name dan content.

rails g scaffold article name content:text

Kode di atas menghasilkan model article dengan atribut name dan content, dan operasi diberikan oleh Scaffold (New, Show, Update, dan Delete). Bisa juga ditulis rails g scaffold article name:string content:text. Tetapi secara default, RoR akan memberikan struktur data string.

rails g scaffold comment article:belongs_to name content

Kode di atas akan menghasilkan model comment dengan atribut name dan content dengan operasi langsung diberikan oleh scaffold. Migrasikan menjadi tabel:

rake db:migrate

Buka file \models\article.rb. Tambahkan:

has_many :comments

Sedangkan pada file\models\comment.rb, tambahkan:

Belongs_to :content

Karena pada saat generate scaffold comment kita sudah menambahkan content:belongs_to, maka tidak perlu menambah relasi di atas. Migrasikan model anda ke database.

rails server

Buka http://localhost:3000/articles dan masukan satu data baru. Jalankan dan ketika menekan tombol show, kita akan menambahkan comment milik content yang bersangkutan. Maka pada metode show, kita harus memanggil variabel comment. Pada \controller\contents_controller.rb tambahkan pada metode show (def show):

@comment = Comment.new(article_id: @article.id)

Artinya kita akan menambahkan comment baru berdasarkan content_id dari pemilikinya yang saat ini sedang tampil. Jika tidak diisi, ketika akan menambahkan comment pada contents#show, akan muncul eror di form_for (cannot contain nil .. dst). Secara default, show pada daftar content tidak menyertakan data comment, oleh karena itu SISIPI (pada line 12) kode pada \view\articles\show.html.erb:

<% unless @article.comments.empty? %>

<h3><%= pluralize(@article.comments.size, ‘Comment’) %></h3>

<% end %>

 

<div id=”comments”>

<% unless @article.comments.empty? %>

<%= render @article.comments %>

<% end %>

</div>

 

<h3>Add a comment:</h3>

 

<%= render partial: ‘comments/form’ %>

Letakkan kode di atas sebelum link_to. Di sini render partial: bemaksud menyisipi form menambahkan comment baru pada form menampilkan (show) content.

Buat satu file baru di \views\comments\ dengan nama _comment.html.erb. Isi dengan kode berikut:

<div class=”comment” data-time=”<%= comment.created_at.to_i %>”>

<strong><%= comment.name %></strong>

<em>on <%= comment.created_at.strftime(‘%b %d, %Y at %I:%M %p’) %></em>

<%= simple_format comment.content %>

</div>

File _comment.html.erb merupakan file template untuk render @content.comment. Jika tidak ada ini maka akan ada pesan “Missing Templat Contents#show“. Anda harus menghasilkan aplikasi sederhana yang menambah content articles dengan komentarnya. Untuk membuat tampilan yang indah, Anda harus sedikit mengatur layout html dan css aplikas yang baru saja Anda buat.

Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.