Ruby on RailsCreating a Rails Application
Carol E WolfCS396X
Ruby Console Window
•First choose Rails Applications•Next select Open Ruby Console Window•At the prompt, type• rails apps_name• For example: rails
library
•This creates a full directory system in the folder rails_apps.
Console Window
Rails directory system
Important folders app
controllers – sits between client and database helpers – module with common ruby code models – code to interface with the database views – web pages containing html and erb
db – contains database migration – methods to change the database
script console – interactive console window for ruby code dbconsole – interactive console window for the
database generate – methods to generate scaffolding and
migrations server – activates server to be used with localhost
Adding a table to the database You can use the scaffold command to set up your
database. The database is created when you create the application.
Type the following to create a table called books. ruby script/generate scaffold book isbn:string
author:string title:string Note that if you call it book, rails automatically makes it
books. This creates the file 20080805165427_create_books.rb in the
db/migrate folder, where the numbers are a time stamp. Then type
rake db:migrate The rake command executes all the ruby files in the migrate
folder. Rails includes a primary id field that is automatically
incremented when you add rows to the database.
The file, schema.rb Rake adds a ruby file to the db folder called schema. Lines
beginning with # are comments.# This file is auto-generated from the current state of the
database.# (Additional comments omitted.) ActiveRecord::Schema.define(:version => 20080805165427)
do create_table "books", :force => true do |t| t.string "isbn" t.string "author" t.string "title" t.datetime "created_at" t.datetime "updated_at" end end
View the contents of the database To begin with, the books table is empty. Bring
up the server to access it. ruby script/server The server that comes with InstantRails is called
mongrel. It is a version of the open source apache server.
Point your browser to http://localhost:3000/books where localhost is the
name for the IP address 127.0.0.1. (Use that if your computer does not recognize localhost.)
localhost is often called the local loop.
The first web page
The first web page is just the title of the table.
It includes a heading and a link to a New book page.
Click it to add data to the table.
The New book page The new book page
provides text fields with labels.
You can use these to add data.
Just fill in the fields and click Create.
When done, it will take you to a third page that shows what you added.
The show page and the index after adding a book to the table.
The index.html.erb page uses embedded ruby code.
<h1>Listing books</h1><table> <tr>` <th>Isbn</th> <th>Author</th> <th>Title</th> </tr><% for book in @books %> <tr> <td><%=h book.isbn %></td> <td><%=h book.author %></td> <td><%=h book.title %></td> <td><%= link_to 'Show', book %></td> <td><%= link_to 'Edit', edit_book_path(book) %></td> <td><%= link_to 'Destroy', book, :confirm => 'Are you sure?', :method
=> :delete %></td> </tr><% end %></table><br /><%= link_to 'New book', new_book_path %>
Explanation of some of the index page code The <table> tag creates a table with headers
enclosed by <th>…</th> , rows by <tr>…</tr>, and columns by <td>…</td>
The embedded ruby code is enclosed by <%=h…%> <%=h book.isbn %> This line displays the data in the book column.
The controller retrieves the data in a result set, a two dimensional array. It is displayed on the page using a ‘for’ loop. <% for book in @books %> The ‘@’ sign is used to indicate a variable.
The <%= link_to 'New book', new_book_path %> line generates the html code <a href="/books/new">New book</a> .
Header code added by rails to the beginning of the web pages. It also adds a foot to the end.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head> <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<title>Books: index</title> <link href="/stylesheets/scaffold.css?1217948068"
media="screen" rel="stylesheet" type="text/css" /> </head> <body> <p style="color: green"><%= flash[:notice] %></p>
Top Related