rails scaffold from scratch

33
www.hackyale.com < Intro to Rails /> Monday, June 10, 13

Upload: adam-bray

Post on 16-Apr-2017

601 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Rails   scaffold from scratch

www.hackyale.com

< Intro to Rails />

Monday, June 10, 13

Page 2: Rails   scaffold from scratch

Building MVCr from scratch

< front end />

Monday, June 10, 13

Page 3: Rails   scaffold from scratch

MVC Recap

Monday, June 10, 13

Page 4: Rails   scaffold from scratch

Monday, June 10, 13

Page 5: Rails   scaffold from scratch

Monday, June 10, 13

Page 6: Rails   scaffold from scratch

hand-crafted,artisanal

rails code

Monday, June 10, 13

Page 7: Rails   scaffold from scratch

router

Monday, June 10, 13

Page 8: Rails   scaffold from scratch

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

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

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

controller

Monday, June 10, 13

Page 12: Rails   scaffold from scratch

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

CONTROLLER ACTIONS

Controllers have multiple actions.

The standard ‘restful’ actions are:

indexshowcreateneweditupdatedestroy

Monday, June 10, 13

Page 14: Rails   scaffold from scratch

SAMPLE CONTROLLER

class  UsersController  <  ActionController::Base    def  index        @users  =  User.all    endend

Monday, June 10, 13

Page 15: Rails   scaffold from scratch

views

Monday, June 10, 13

Page 16: Rails   scaffold from scratch

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

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

SAMPLE VIEW

<%  @users.each  do  |user|  %>    <%=  user.name  %><%  end  %>

Monday, June 10, 13

Page 19: Rails   scaffold from scratch

models

Monday, June 10, 13

Page 20: Rails   scaffold from scratch

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

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

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

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

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

ADDING ANOTHER COLUMN

rails generate migration AddClassYearToUsers class_year:integer

Monday, June 10, 13

Page 26: Rails   scaffold from scratch

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

SAMPLE MODEL

class  User  <  ActiveRecord::Baseend

Monday, June 10, 13

Page 28: Rails   scaffold from scratch

group activity:add show page

for users

Monday, June 10, 13

Page 29: Rails   scaffold from scratch

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

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

group activity:add new user

form

Monday, June 10, 13

Page 32: Rails   scaffold from scratch

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

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