130 likes | 535 Views
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.
E N D
Ruby on RailsCreating 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
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:stringauthor:stringtitle: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/bookswhere 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>