Feb 02 2008
Second Online.rb
Hmm…
pertemuan semalem unik banget, karena ada saat-saat di mana kami dari tim online di haruskan buat 1 project untuk posting berita. Nah, yang jadi tukang ketik semalem orangnya juga unik dari Jogja lagi
, kadang-kadang lebih sering keluar dari jalur tapi malah menyegarkan suasana
dan tentu saja kerja keras kami nggak sia-sia. Dalam waktu 30 menit project rails versi 1.2.3 untuk buat posting berita aja udah kelar (itu belum dikurangi 20 menit yang di pake untuk ‘guyon ngalor-ngidulnya’)
.
Langsung aja dah aku catat di sini, tapi ingat untuk kali ini kita pake rails versi 1.2.3.
[root@otid htdocs]# rails berita
create
create app/controllers
create app/helpers
create app/models
create app/views/layouts
create config/environments
create components
create db
create doc
create lib
create lib/tasks
create log
create public/images
create public/javascripts
create public/stylesheets
create script/performance
create script/process
create test/fixtures
create test/functional
create test/integration
create test/mocks/development
create test/mocks/test
create test/unit
create vendor
create vendor/plugins
create tmp/sessions
create tmp/sockets
create tmp/cache
create tmp/pids
create Rakefile
create README
create app/controllers/application.rb
create app/helpers/application_helper.rb
create test/test_helper.rb
create config/database.yml
create config/routes.rb
create public/.htaccess
create config/boot.rb
create config/environment.rb
create config/environments/production.rb
create config/environments/development.rb
create config/environments/test.rb
create script/about
create script/breakpointer
create script/console
create script/destroy
create script/generate
create script/performance/benchmarker
create script/performance/profiler
create script/process/reaper
create script/process/spawner
create script/process/inspector
create script/runner
create script/server
create script/plugin
create public/dispatch.rb
create public/dispatch.cgi
create public/dispatch.fcgi
create public/404.html
create public/500.html
create public/index.html
create public/favicon.ico
create public/robots.txt
create public/images/rails.png
create public/javascripts/prototype.js
create public/javascripts/effects.js
create public/javascripts/dragdrop.js
create public/javascripts/controls.js
create public/javascripts/application.js
create doc/README_FOR_APP
create log/server.log
create log/production.log
create log/development.log
create log/test.log
[root@otid htdocs]# cd berita/
[root@otid berita]#
Setelah kita buat projectnya dan tentu saja kemudian kta masuk ke doc root-nya, kemudian kita generate model-nya.
[root@otid berita]# ./script/generate model berita
exists app/models/
exists test/unit/
exists test/fixtures/
create app/models/berita.rb
create test/unit/berita_test.rb
create test/fixtures/beritas.yml
create db/migrate
create db/migrate/001_create_beritas.rb
[root@otid berita]#
Jangan lupa ubah konfigurasi koneksi databasenya di config/database.yml jika diperlukan.
development:
adapter: mysql
database: berita_development
username: root
password:
socket: /opt/lampp/var/mysql/mysql.sock
Buat database berita_development, karena kita pake rails versi 1.2.3 kita tidak bisa menggunakan perintah rake db:create jadi kita harus buat database secara manual bisa melalui console maupun dengan phpmyadmin. Berikut adalah contoh untuk buat database dengan console :
[root@otid ditto]# /opt/lampp/bin/mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.0.45 Source distributionType ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
mysql> create database berita_development;
Query OK, 1 row affected (0.08 sec)
Setelah database dibuat, kita akan buat 1 tabel (beritas) yang dapat kita atur struktur tabelnya pada file db/migrate/001_create_beritas.rb.
class CreateBeritas < ActiveRecord::Migration
def self.up
create_table :beritas do |t|
t.column “judul”, :string,
:default => “”, :null => false
t.column “isi”, :text,
:default => “”, :null => false
end
enddef self.down
drop_table :beritas
end
end
Kemudian kita buat tabelnya dengan perintah :
[root@otid berita]# rake db:migrate
(in /opt/lampp/htdocs/berita)
== CreateBeritas: migrating ===================================================
– create_table(:beritas)
-> 0.0043s
== CreateBeritas: migrated (0.0045s) ==========================================[root@otid berita]#
Tabel sudah terbentuk sekarang waktunya kita buat form untuk kirim berita :
[root@otid berita]# script/generate controller berita index new
exists app/controllers/
exists app/helpers/
create app/views/berita
exists test/functional/
create app/controllers/berita_controller.rb
create test/functional/berita_controller_test.rb
create app/helpers/berita_helper.rb
create app/views/berita/index.rhtml
create app/views/berita/new.rhtml
[root@otid berita]#
Lalu kita langsung mengarah pada file app/views/berita/new.rhtml untuk menambahkan beberapa script berikut :
<%= stylesheet_link_tag ’scaffold’ %>
<p style=”width:500px;”>Silakan dilengkapi data di bawah ini</p><p><font color=”red”><%= flash[:notice] %></font></p>
<%= error_messages_for :masuk %>
<br />
<strong>Personal Data</strong>
<% form_for :masuk, @masuk, :url => {:action => :proses_insert} do |f| %>
<div id=”head”>
<table>
<tr>
<td>Judul *</td>
<td>:</td>
<td><%= f.text_field :judul, {:size => ‘40′, :maxlength=>’30′} %></td>
</tr>
<tr>
<td>Isi *</td>
<td>:</td>
<td><%= f.text_area :isi %></td>
</tr>
</table>
</div>
<br />
<%= submit_tag ‘Kirim’ %>
<% end %>
Kemudian download file scaffold.css dan letakkan pada path public/stylesheet/scaffold.css. Berikutnya kita ubah berita controller pada file app/controllers/berita_controller.rb. Pada file ini akan terjadi proses insert data ke database dengan menggunakan action => “proses_insert”.
class BeritaController < ApplicationController
def index
enddef new
enddef proses_insert
if request.post?
@masuk=Berita.new(params[:masuk])
if @masuk.save
flash[:notice] = “udah masuk”
redirect_to :action => “new”
else
flash[:notice] = “nggak masuk”
render :action => ‘new’
end
end
endend
Untuk menambah validasi, misalnya salah field2 dari form untuk posting baru tidak boleh kosong, kita bisa menambah atau mengurangi validasinya pada file app/models/berita.rb.
class Berita < ActiveRecord::Base
validates_presence_of :judul,
:message => “Masukkan Judul”
validates_presence_of :isi,
:message => “Masukkan Isi”
end
Setelah itu jalankan command untuk mengaktifkan webserver pada console.
[root@otid berita]# ./script/server
=> Booting Mongrel (use ’script/server webrick’ to force WEBrick)
=> Rails application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
** Starting Mongrel listening at 0.0.0.0:3000
** Starting Rails with development environment…
** Rails loaded.
** Loading any Rails specific GemPlugins
** Signals ready. TERM => stop. USR2 => restart. INT => stop (no restart).
** Rails signals registered. HUP => reload (without restart). It might not work well.
** Mongrel available at 0.0.0.0:3000
** Use CTRL-C to stop.
Lalu kita arahkan browser ke http://localhost:3000/berita/new. Jika program yang kita buat sudah benar, akan tampil seperti berikut :

Jika kita langsung klik pada button kirim, maka akan tampil seperti gambar di bawah :

Dan jika kita mengisi kedua field dengan benar, data akan dimasukkan ke database. Dengan suksesnya validasi, diakhiri pula pertemuan kedua Online.rb.
C U next time 
3 Responses to “Second Online.rb”
Leave a Reply
You can also use this smilies by clicking them :
more » |














[…] online.rb yang ke tiga ini, kami melanjutkan project yang sebelumnya. Kalo pertemuan minggu lalu cuma posting berita tentu saja berbeda dengan yang semalam, kami […]
[…] online.rb yang ke tiga ini, kami melanjutkan project yang sebelumnya. Kalo pertemuan minggu lalu cuma posting berita tentu saja berbeda dengan yang semalam, kami […]
baru twu aku klo bisa kayak gni
(cuman mau ngtes gvatar gue), coz kok gak kluar kluar yawww????