TUTORIAL RUBY ON RAILS
TEKNIK INFORMATIKA-UNIV.NASIONAL
Oleh: Slamet nurhadi
DAFTAR ISI:
1. MEMBUAT PROYEK BARU DENGAN SETINGAN DATABASE MySQL
2. MEMBUAT HALAMAN WEB SEDERHANA 3. MEMBUAT USER MODEL
1. MEMBUAT PROYEK BARU DENGAN SETINGAN DATABASE MySQL
Buka console pada windows (menggunakan InstantRails)
Klik kiri pada ikon ‘I’
>rails railscoders –database=mysql kemudian enter kode tersebut
Lalu masuk ke folder railscoders >cd railscoders
Lalu jalankan WEBRick anda dengan mencoba kode ini >ruby script/server
Konfigurasi database yang anda gunakan pada root config\database.yml development: adapter: mysql encoding: utf8 reconnect: false database: railscoders_development pool: 5 username: root password: host: localhost
menguji database dengan kode sebagai berikut >rake db:migrate
2. MEMBUAT HALAMAN WEB SEDERHANA
Membuat proyek baru dengan nama tea (otomatis dengan SQLite) >rails tea
Lalu tekan enter, kemudian masuk ke foler tea
tea>ruby script/generate controller Site index about help
lalu anda masuk ke app/controller/site_controller.rb dan lihat kodingnya sebagai berikut
class SiteController < ApplicationController def index end def about end def help end end
saya menggunakan Sublime Text sebagai editor dan gambarnya sebagai berikut
Kita coba mengaktifkan servernya dengan kode sepeti yang telah dijelaskan di sesi sebelumnya, lebih lengkapnya kita coba bersama tea>ruby script/server
lalu anda buka pada http://localhost:3000/site dan gambarnya lihat di
bawah ini
Halaman index
Buka config/routes.rb lalu ubah sehingga sebagai berikut Dari
# map.connect ", :controller => "welcome" Menjadi
map.connect ", :controller => "site"
Kemudian hapus file index.html pada root public/index.html Pada app/views/site/index.rhtml coba ubah dengan koding sebagai berikut
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <title>Universitas Nasional</title> </head> <body>
<h1>Welcome to Faculty of Information and Communication Technology</h1>
<h2>department of Information Engineering</h2> </body>
</html>
Lihat perubahannya pada
Halaman About
Pada app/views/site/about.rhtml coba ubah dengan koding sebagai berikut
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <title>About Faculty</title> </head> <body> <h1>About Faculty</h1>
<p>Letak Kesekretariatan Fakultas berada pada Blok-4 lantai 2</p>
</body> </html>
Buka config/routes.rb lalu tulis sehingga sebagai berikut map.root :controller => "site"
map.about '/about', :controller => 'site', :action => 'about'
Halaman Help
Pada app/views/site/help.rhtml coba ubah dengan koding sebagai berikut
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <title> Help</title> </head> <body> <h1>Help</h1>
<p>Bila perlu bantuan silahkan menghubungi kami dengan menelpon, email, sms, mms maupun wesel.
</p> </body> </html>
Buka config/routes.rb lalu tulis sehingga sebagai berikut map.help '/help', :controller => 'site', :action => 'help'
Gambar koding keseluruhan config/routes.rb dibawah ini
Menambahkan navigasi
buka app/controllers/site controller.rb lalu ketik sehingga sebagai
berikut
class SiteController < ApplicationController def index
@title ="welcome to Faculty of Information and Communication Technology"
def about
@title ="about Faculty" end
def help
@title ="Help Faculty" end
end
Lalu buat halaman site.rhtml lalu taruh pada root
app/views/layouts/site.rhtml dan tulis kodingnya sebagai berikut
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html>
<head>
<title><%= @title %></title> </head>
<body>
<%= link_to("Home", { :action => "index" }) %> | <%= link_to("About Us", { :action => "about" }) %> | <%= link_to("Help", { :action => "help" }) %>
<%= @content_for_layout %> </body>
</html>
Lalu lihat di browser anda sebagai berikut di http://localhost:3000/
Membuat Halaman dengan style
Pada app/views/layouts/site.rhtml dan ubah kodingnya sehingga sebagai berikut
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html>
<head>
<title><%= @title %></title>
<%= stylesheet_link_tag "site" %> </head>
<body>
<div id="whole_page">
<div id="header">Universitas Nasional</div> <div id="nav">
<%= link_to_unless_current "Home", :action => "index" %> |
<%= link_to_unless_current "About Us", :action => "about" %> |
<%= link_to_unless_current "Help", :action => "help" %> </div> <div id="content"> <%= @content_for_layout %> </div> </div> </body> </html>
buat file site.css dan taruh pada root public/
stylesheets/site.css dan tulis kodingnya sebagai berikut body { font-family: sans-serif; background: #0F5979; margin: 0; text-align: center; } #whole_page { width: 50em; margin: auto; padding: 0; text-align: left; border-width: 0 1px 1px 1px; border-color: black; border-style: solid; } #header { color: white;
background: #44960C; /* No "ruby" defined in HTML color names! */ font-size: 24pt; padding: 0.25em; margin-bottom: 0; } #nav {
color: black; font-size: 12pt; font-weight: bold; background: #ccc; padding: 0.5em; }
#nav a, #nav a:visited { color: maroon;
text-decoration: none; }
#nav a:hover {
border-bottom: 2px dotted maroon; } #content { height: 100%; background: white; padding: 1em; } #content h1 { font-size: 18pt; }
3. MEMBUAT USER MODEL
Membuat User model dengan memakai koding dibawah ini > ruby script/generate model User
Kita lihat Pada db/migrate/001_create_users.rb sehingga seperti berikut ini
class CreateUsers < ActiveRecord::Migration def self.up
create_table :users do |t|
t.column :screen_name, :string t.column :email, :string t.column :password, :string t.timestamps end end def self.down drop_table :users end end
Buka app/models/user.rb dan ketik kodingnya sehingga terlihat sebagai berikut
class User < ActiveRecord::Base # Max & min lengths for all fields SCREEN_NAME_MIN_LENGTH = 4 SCREEN_NAME_MAX_LENGTH = 20 PASSWORD_MIN_LENGTH = 4 PASSWORD_MAX_LENGTH = 40 EMAIL_MAX_LENGTH = 50 SCREEN_NAME_RANGE = SCREEN_NAME_MIN_LENGTH..SCREEN_NAME_MAX_LENGTH PASSWORD_RANGE = PASSWORD_MIN_LENGTH..PASSWORD_MAX_LENGTH validates_uniqueness_of :screen_name, :email
validates_length_of :screen_name, :within => 4..20 validates_length_of :password, :within => 4..40 validates_length_of :email, :maximum => 50
validates_presence_of :email
validates_length_of :email, :maximum => EMAIL_MAX_LENGTH validates_format_of :screen_name,
:with => /^[A-Z0-9_]*$/i,
:message => "must contain only letters, " + "numbers, and underscores"
validates_format_of :email,
:with => /^[A-Z0-9._%-]+@([A-Z0-9-]+\.)+[A-Z]{2,4}$/i, :message => "must be a valid email address"
def validate
errors.add(:email, "must be valid.") unless email.include? ("@")
if screen_name.include?(" ")
errors.add(:screen_name, "cannot include spaces.") end
end end
4. MEMBUAT REGISTERING USERS Ketik koding ini
tea>ruby script/generate controller User index register maka akan terlihat pada app/controllers/user_controller.rb class UserController < ApplicationController
def index end
def register end
end
dan buat koding pada app/views/user/register.rhtml <h2>Register</h2>
<% form_for :user do |form| %> <fieldset>
<legend>Enter Your Details</legend>
<label for="screen_name">Screen name:</label> <%= form.text_field :screen_name %> <br /> <label for="email">Email:</label> <%= form.text_field :email %> <br /> <label for="password">Password:</label> <%= form.password_field :password %> <br />
<%= submit_tag "Register!", :class => "submit" %> </fieldset>
<% end %>
Sehingga seperti dibawah ini
class UserController < ApplicationController layout "site" def index end def register @title = "Register" end end
dan lihat pada browser http://localhost:3000/user/register
Sekarang ubah koding pada app/views/user/register.rhtml menjadi seperti di bawah ini
<h2>Register</h2>
<% form_for :user do |form| %> <fieldset>
<legend>Enter Your Details</legend> <div class="form_row">
<label for="screen_name">Screen name:</label> <%= form.text_field :screen_name %> </div> <div class="form_row"> <label for="email">Email:</label> <%= form.text_field :email %> </div> <div class="form_row"> <label for="password">Password:</label> <%= form.password_field :password %> </div> <div class="form_row">
<%= submit_tag "Register!", :class => "submit" %> </div>
</fieldset> <% end %>
Sekarang membuat style pada tampilan di public/stylesheets/site.css
/* penambahan style tampilan register */ html fieldset { position: relative; } html legend { position:absolute; top: -1em; left: .5em; } html fieldset { position: relative; margin-top:1em; padding-top:2em; padding-bottom: 2em; } /* Form Styles */ fieldset {
background: #ddd; }
legend {
color: white;
background: maroon; padding: .4em 1em; } label { width: 10em; float: left; text-align: right; margin-right: 0.2em; display: block; } .form_row { white-space: nowrap; padding-bottom: .5em; } .submit { margin-left: 15em; }
dan lihat pada browser http://localhost:3000/user/register untuk melihat perubahannya