Web Developer's Virtual Library: Encyclopedia of Web Design Tutorials, Articles and Discussions


WDVL Newsletter

jobs.webdeveloper.com

e-commerce
Partner With Us















Developer Channel
FlashKit.com
JavaScript.com
JavaScriptSource
Developer Jobs
ScriptSearch
StreamingMediaWorld
Web Developer's Journal
Web Developer's Virtual Library
WebDeveloper.com
Webreference
Web Hosts
XMLfiles.com

internet.com
IT
Developer
Internet News
Small Business
Personal Technology

Search internet.com
Advertise
Corporate Info
Newsletters
Tech Jobs
E-mail Offers


Building Our First Rails Application

An Employee Information System

Bookmark and Share

by Saurabh Bhatia

November 03, 2009

Rails user base continues to grow every day. Moving forward with our series we'll build a basic Rails application that illustrates how easy Rails is to use.

Introduction

Now that we know what Ruby, Rails and what Rails made of, we can start putting together a delicious recipe which will be as quick as an apple pie, as easy as a pancake.

The Agenda

Keeping things simple and straightforward, we will create an employee information manager, in which we would be able to enter, edit and maintain a simple address book of a company's employees.

The Process

Create a blank Rails application with the default directory structure. Type the following command on your windows command line:

C:\> rails eim

A host of files and directories will be created for you as shown in the figure 1.



Click here for larger image

Figure 1

Now change the directory to the application directory by typing:

C:\> cd eim
C:\eim>

We need to have a database in order to store, edit and maintain our employee details. Our choice of database is MySQL for this tutorial. Login to your MySQL query browser and create a fresh blank database.


Figure 2


Figure 3

Navigating to the config folder of the application, open database.yml using the editor of your choice and edit it to make it work for MySQL database. The default database.yml file generates for SQLite. The database.yml for MySQL it looks like this:

development:
 adapter: mysql
 database: eim_development
 username: root
 password: rails
 host: localhost
  
test:
 adapter: mysql
 database: eim_test
 username: root
 password: rails
 host: localhost
  
  
production:
 adapter: mysql
 database: eim_production
 username: root
 password: rails
 host: localhost

Change the database credentials according to your local environment. As mentioned in our previous article, the tables in Rails are defined using migrations which makes the application database ultra-portable. In order to create the migration, open the command line and type the command:

C:\eim> ruby script/generate migration employee



Click here for larger image

Figure 4

This command generates a folder named migrate under your db directory and a file named 20091028212040_employee. This file's name consists of a datetime stamp and the mentioned tablename in the command. Let's check what information we want from our employees. Lets keep it simple, name, designation and address. Here is our table definition inside the migration file.

  class Employee < ActiveRecord::Migration
    def self.up
       create_table :employees do |t|
        t.string :name
        t.string :designation
        t.text :address
  
        t.timestamps
     end
    end
  
    def self.down
       drop_table :employees
    end
  end

The first part of the definition (t.string :name) defines the data type and the second part provides the name of the field. Once all the definitions have been made, the database creation is just one command away.

C:\eim> rake db:migrate


Figure 5

As shown in the figure above, the tables are created on the successful running of migration. We can go and check out our query browser.


Figure 6

With these tables ready, we are ready to take a leap. We will generate a scaffold of the Rails application. Just to refresh, the scaffold generates, models, controllers and default views. It adds Restful routes to the controllers and writes all the actions by default.

At the stroke of this magic command we will have the structure of our application developed:

C:\> ruby script/generate scaffold employees


Figure 7

Everything will be setup except your views, so lets go and edit our views. They reside in the app/views/employees directory. We will add the field names and data types in order to display the respective type of field.

  <h1>New employee</h1>
  
  <% form_for(@employee) do |f| %>
    <%= f.error_messages %>
  
  
  <p>
    <%= f.label :name %><br />
    <%= f.text_field :name %>
    
    <%= f.label :designation %><br />
    <%= f.text_field :name %>
  
   <%= f.label :address %><br />
    <%= f.text_area :address %>
  
  </p>
  
  
    <p>
      <%= f.submit 'Create' %>
    </p>
  <% end %>
  
  <%= link_to 'Back', employees_path %>

Also, to see each record, we have a show action defined. In our show.html.erb, we add the following:

  <b>Name:</b>
  <%=h @employee.name %>
  
  <b>Designation:</b>
  <%=h @employee.designation %>
  
  <b>Address:</b>
  <%=h @employee.address %>
  
  <%= link_to 'Edit', edit_employee_path(@employee) %> |
  <%= link_to 'Back', employees_path %>

In the above HTML snippet, an instance variable of employee is created and each attribute of the employee object is called in each field to display the field.

Let's see how our application looks and works so far. Boot the server with the command:

C:\eim> ruby script/server

Navigate to http://localhost:3000/employees/new on your locahost in your browser and you will be presented with the form we just created.


Figure 8

On filling the details in the form, and pressing create, we will be taken to the show page.



Click here for larger image

Figure 9

As seen in the browser, the URL is a Restful one as it points towards the resource directly.

That was pretty fast wasn't it?

Adding Validations

Validations in Rails are pretty much like English sentences and are defined inside the model. Let us consider a case, where we want don't want any of the fields empty and all the fields to be compulsory. Our validation would look like this:

class Employee < ActiveRecord::Base
validates_presence_of :name, :designation, :address
end

In the above validation, we check weather the fields name, designation and address is filled out or not. If left empty, it will throw an exception which looks like this:


Figure 10

There are a long list of validations which check the uniqueness of the field, regular expressions for email syntax, and nested validations too.

Conclusion

Now, that we have created a basic employee information system, we will enhance it further in the coming tutorials by adding a login system and some cool AJAX features to it.



Up to => Home / Authoring / Tutorials / Ruby on Rails



Jupiter Online Media: internet.comearthweb.comDevx.commediabistro.comGraphics.com

Search:

Jupitermedia Corporation has two divisions: Jupiterimages and Jupiter Online Media

Jupitermedia Corporate Info


Legal Notices, Licensing, & Permissions, Privacy Policy.

Web Hosting | Newsletters | Tech Jobs | Shopping | E-mail Offers