Creating a Rails Application

Download Report

Transcript Creating a Rails Application

Ruby on Rails
Creating a Rails Application
Carol E Wolf
CS396X
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





db – contains database


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
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.


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



The database is created when you create the application.
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…%>



The controller retrieves the data in a result set, a two
dimensional array. It is displayed on the page using a ‘for’ loop.



<%=h book.isbn %>
This line displays the data in the book column.
<% 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/xhtml1transitional.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>