rails scaffold from scratch
TRANSCRIPT
![Page 1: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/1.jpg)
www.hackyale.com
< Intro to Rails />
Monday, June 10, 13
![Page 2: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/2.jpg)
Building MVCr from scratch
< front end />
Monday, June 10, 13
![Page 3: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/3.jpg)
MVC Recap
Monday, June 10, 13
![Page 4: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/4.jpg)
Monday, June 10, 13
![Page 5: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/5.jpg)
Monday, June 10, 13
![Page 6: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/6.jpg)
hand-crafted,artisanal
rails code
Monday, June 10, 13
![Page 7: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/7.jpg)
router
Monday, June 10, 13
![Page 8: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/8.jpg)
ROUTER
the router looks at the incoming request and sends it to the right controller.
Example:
myapp.com/users/1/edit
goes to the users controller, edit action(and sends a ‘parameter’ for user_id=1 as )
Monday, June 10, 13
![Page 9: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/9.jpg)
ROUTER
/users users#index list all users
/users/1 users#show show user with id 1
/users/new users#new make a new user
/users/1/edit users#edit edit user with id 1
Monday, June 10, 13
![Page 10: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/10.jpg)
SAMPLE ROUTE
RedditDemo::Application.routes.draw do match 'users/' => 'users#index' root to: 'users#index'end
Monday, June 10, 13
![Page 11: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/11.jpg)
controller
Monday, June 10, 13
![Page 12: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/12.jpg)
CONTROLLER
The controller orchestrates the request.
It communicates with models to gather and manipulate data.
It then passes that data to the view.
Monday, June 10, 13
![Page 13: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/13.jpg)
CONTROLLER ACTIONS
Controllers have multiple actions.
The standard ‘restful’ actions are:
indexshowcreateneweditupdatedestroy
Monday, June 10, 13
![Page 14: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/14.jpg)
SAMPLE CONTROLLER
class UsersController < ActionController::Base def index @users = User.all endend
Monday, June 10, 13
![Page 15: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/15.jpg)
views
Monday, June 10, 13
![Page 16: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/16.jpg)
VIEWS
Views are templates for how your web pages look.
Variables created in the respective controller are used to insert relevant information into the template.
Monday, June 10, 13
![Page 17: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/17.jpg)
VIEWS
Views use Embedded RuBy (ERB) to substitute data into the template.
<% ruby.code.no.output %>
<%= equal.sign.outputs.to.template %>
Monday, June 10, 13
![Page 18: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/18.jpg)
SAMPLE VIEW
<% @users.each do |user| %> <%= user.name %><% end %>
Monday, June 10, 13
![Page 19: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/19.jpg)
models
Monday, June 10, 13
![Page 20: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/20.jpg)
MODELS
Models represent the nouns and data in your application.
They make sure stored data is valid, and perform calculations/analysis.
Monday, June 10, 13
![Page 21: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/21.jpg)
DATABASES
•Store our model data (in rows), and define the attributes (columns).
•We manage changes in our database with migrations.
Monday, June 10, 13
![Page 22: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/22.jpg)
MIGRATION
>> rails generate migration CreateUsers
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :first_name
t.string :last_name
t.string :netid
t.timestamps
end
end
end
Monday, June 10, 13
![Page 23: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/23.jpg)
DATABASE
id first_name last_name netid
1
2
3
Adam Bray alb64
Vladimir The Bear vtb39
Charlie The Horse cth44
users
Monday, June 10, 13
![Page 24: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/24.jpg)
DATABASE
id first_name last_name netid
1
2
3
Adam Bray alb64
Vladimir The Bear vtb39
Charlie The Horse cth44
users
Monday, June 10, 13
![Page 25: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/25.jpg)
ADDING ANOTHER COLUMN
rails generate migration AddClassYearToUsers class_year:integer
Monday, June 10, 13
![Page 26: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/26.jpg)
DATABASE
id first_name last_name netid class_year
1
2
3
Adam Bray alb64 1995
Vladimir The Bear vtb39 2015
Charlie The Horse cth44 2016
users
Monday, June 10, 13
![Page 27: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/27.jpg)
SAMPLE MODEL
class User < ActiveRecord::Baseend
Monday, June 10, 13
![Page 28: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/28.jpg)
group activity:add show page
for users
Monday, June 10, 13
![Page 29: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/29.jpg)
YOU’LL NEED TO:
•create a route
•add a controller action
•add a view template
Monday, June 10, 13
![Page 30: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/30.jpg)
TIPS
params hash:if you put symbols in your route they are available in controller
e.g. ‘users/:id’ gives you ‘params[:id]’ in controller
retrieving modelsuser.find(num) returns user with id == num
use link_to method to link from index
Monday, June 10, 13
![Page 31: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/31.jpg)
group activity:add new user
form
Monday, June 10, 13
![Page 32: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/32.jpg)
YOU’LL NEED TO
•add two new routes• use ‘resources’ route instead
•add two new actions, new, and create• new generates a form
• create takes form data and uses it to create user
Monday, June 10, 13
![Page 33: Rails scaffold from scratch](https://reader033.vdocuments.us/reader033/viewer/2022042908/58f2f64d1a28abdb248b45a9/html5/thumbnails/33.jpg)
FORMS
<%= form_for(@user) do |f| %> <div class="field"> <%= f.label :first_name %><br /> <%= f.text_field :first_name %> </div> <div class="actions"> <%= f.submit %> </div><% end %>
Monday, June 10, 13