web_06_ruby on rails (임시)

73
* Ruby On Rails 본 교육자료는 팀 에어 내의 팀원 교육용으로 제작되었음을 알려드립니다. 팀에어 팀원 외 허락을 받지 않은 사람의 무단도용을 일체 금합니다.

Upload: team-air-dimigo

Post on 08-Aug-2015

225 views

Category:

Education


1 download

TRANSCRIPT

Page 1: Web_06_Ruby On Rails (임시)

*

Ruby On Rails

본 교육자료는 팀 에어 내의 팀원 교육용으로 제작되었음을 알려드립니다. 팀에어 팀원 외 허락을 받지 않은 사람의 무단도용을 일체 금합니다.

Page 2: Web_06_Ruby On Rails (임시)
Page 3: Web_06_Ruby On Rails (임시)

ContentsㄴRails 소개ㄴ설치하기ㄴMVCㄴViewㄴErb에 대한 설명ㄴAssets 폴더 설명

ㄴControllerㄴAction과 Post, Get 받는 방법

ㄴModelㄴ데이터베이스 설명ㄴ데이터 검증하기ㄴ테이블간 관계 설정

+ 숙제

Page 4: Web_06_Ruby On Rails (임시)

왜 레일즈일까?

Page 5: Web_06_Ruby On Rails (임시)

다른 것보다 쉬워요

Page 6: Web_06_Ruby On Rails (임시)

효율적이게 개발할 수 있어요

Page 7: Web_06_Ruby On Rails (임시)

그래서, 레일즈가 무엇일까?

Page 8: Web_06_Ruby On Rails (임시)

루비로 작성된 MVC패턴을 이용하는 오픈 소스 프레임워크

Page 9: Web_06_Ruby On Rails (임시)

레일즈굿

Page 10: Web_06_Ruby On Rails (임시)

웹 애플리케이션을 손쉽게개발, 배치 유지 보수할 수 있게 해주는 프레임워크

Page 11: Web_06_Ruby On Rails (임시)
Page 12: Web_06_Ruby On Rails (임시)

일단 설치부터 해봅시다!

Page 13: Web_06_Ruby On Rails (임시)

http://railsinstaller.org

Page 14: Web_06_Ruby On Rails (임시)

윈도우

Page 15: Web_06_Ruby On Rails (임시)
Page 16: Web_06_Ruby On Rails (임시)

설치하면 끝

Page 17: Web_06_Ruby On Rails (임시)

맥이요?

Page 18: Web_06_Ruby On Rails (임시)
Page 19: Web_06_Ruby On Rails (임시)

찬희가 해줄거에요노예

Page 20: Web_06_Ruby On Rails (임시)

다 설치하셨다면배울 준비를 해줍시다!

Page 21: Web_06_Ruby On Rails (임시)

레일즈 프로젝트 만들기윈도우

rails new [프로젝트 이름] --skip-bundle

[윈도우는 bundle을 skip하지 않으면 에러가 펑펑]

rails new [프로젝트 이름]

Page 22: Web_06_Ruby On Rails (임시)

많아요, 정말

Page 23: Web_06_Ruby On Rails (임시)

실제로 사용할 파일들

YEEEEEEEEEAAAAAAAAAH

Page 24: Web_06_Ruby On Rails (임시)

rails server이제 크롬을 켜서 localhost:3000으로 가봅시다

Page 25: Web_06_Ruby On Rails (임시)

짜잔

Page 26: Web_06_Ruby On Rails (임시)

rails generate controller main index

main 컨트롤러를 만들고그 안에 index를 추가해주세요!

(generate는 g로 줄여서 사용할 수 있어요)

Page 27: Web_06_Ruby On Rails (임시)

준비는 끝났어요

Page 28: Web_06_Ruby On Rails (임시)

본격적으로해봐요!

Page 29: Web_06_Ruby On Rails (임시)

MVC

루비로 작성된 MVC패턴을 이용하는 오픈 소스 프레임워크

Page 30: Web_06_Ruby On Rails (임시)

Model ViewController

이 친구들은 서로 상호작용하며 하나같이 움직입니다!

Page 31: Web_06_Ruby On Rails (임시)

화면

모델

라우팅

컨트롤러

MVC 구조

Page 32: Web_06_Ruby On Rails (임시)

화면

모델

라우팅

컨트롤러

MVC 구조

Page 33: Web_06_Ruby On Rails (임시)

ViewModel에 있는 데이터를 기반으로사용자 인터페이스 생성을 책임진다.

Page 34: Web_06_Ruby On Rails (임시)

index.html.erb저게 뭐야

Page 35: Web_06_Ruby On Rails (임시)

ERBEmbedded Ruby

파일 안에서 루비코드를 사용할 수 있다.

Page 36: Web_06_Ruby On Rails (임시)

<% 루비 코드 %><%= 출력할 때는 이걸로 %>

Page 37: Web_06_Ruby On Rails (임시)

쫄지마!확장자가 .erb라고 무서워하지 마세요

html 코드를 그대로 사용하면 돼요

Page 38: Web_06_Ruby On Rails (임시)

스타일 추가는 어떻게 해요?

Page 39: Web_06_Ruby On Rails (임시)

원하는 것이 다 있는 곳app/assets

assets

Page 40: Web_06_Ruby On Rails (임시)

assetsㄴImages <= 그림

ㄴJavascripts <= 자바스크립트 파일ㄴStylesheets <= Css파일

파일도 추가가 가능하다!

Page 41: Web_06_Ruby On Rails (임시)

화면

모델

라우팅

컨트롤러

MVC 구조

Page 42: Web_06_Ruby On Rails (임시)

Controller외부에서 이벤트를 받아 Model과 상호작용을 한 뒤

사용자에게 적절한 View를 보여준다.

Page 43: Web_06_Ruby On Rails (임시)

액션컨트롤러 안에서 만들어지는 메소드

Page 44: Web_06_Ruby On Rails (임시)

[./app/controllers/main_controller.rb]

class MainController < ApplicationController

def index <= 액션

end

end

Page 45: Web_06_Ruby On Rails (임시)

Post, Get과 params

Page 46: Web_06_Ruby On Rails (임시)

Routing외부로 들어오는 URL을 인식하고

컨트롤러의 액션으로 보내주는 역할을 한다.

Page 47: Web_06_Ruby On Rails (임시)

[./config/route.rb]

Rails.application.routes.draw do

get 'main/index‘ <= localhost:3000/main/indexㄴ get 방식으로 전송할 것이다 정도

post ‘main/index’ <= 주소는 같음ㄴ post 방식으로 전송하고 싶으면 이렇게

end

Page 48: Web_06_Ruby On Rails (임시)

“ GET

Page 49: Web_06_Ruby On Rails (임시)

[./app/controllers/main_controller.rb]

class MainController < ApplicationController

def index <= form 태그에서 전송한 데이터는 여기서 처리해요

params[:class]params[:name]params[:introduce]

end

end

Page 50: Web_06_Ruby On Rails (임시)

화면

모델

라우팅

컨트롤러

데이터 베이스

MVC 구조

Page 51: Web_06_Ruby On Rails (임시)

1일차 끝~!더할까?

Page 52: Web_06_Ruby On Rails (임시)

Model애플리케이션의 상태 관리를 책임지고,

데이터에 적용되는 모든 규칙들을 집행한다.

Page 53: Web_06_Ruby On Rails (임시)

데이터베이스통합 관리되는 정보의 집합

Page 54: Web_06_Ruby On Rails (임시)

rails generate model UserUser 모델을 만들어주세요!

Page 55: Web_06_Ruby On Rails (임시)

마이그레이션 파일작성하기

Page 56: Web_06_Ruby On Rails (임시)

테이블칼럼레코드

[./db/migrate/xxxxxxx_create_users.rb]

create_table :users do |t|

t.string :user_namet.string :passwordㄴ t.[자료형] :[이름]

t.timestamps null: falseend

User

user_name password

Hiddenest 1234

Frostornge 5678

Page 57: Web_06_Ruby On Rails (임시)

rakeRake를 사용한다는 것은

믿음직한 조수를 늘 곁에 두고 있는 것과 같다.

Page 58: Web_06_Ruby On Rails (임시)

rake db:migrate데이터베이스를 생성해주세요!

rake db:rollback데이터베이스를 초기화 해주세요!

Page 59: Web_06_Ruby On Rails (임시)

데이터 검증하기이상한 값들이 데이터베이스에 들어가는 것을 막아줄 것입니다!

Page 60: Web_06_Ruby On Rails (임시)

[./app/models/user.rb]

class User < ActiveRecord::Base

[validate :[이름], 검증메서드: {option}]ex:) validate :user_name, presence: true

[presence: true] : 값이 있는지 검사한다.[uniqueness: true] : 값이 이미 데이터베이스에 있는지 검사한다.[numericality: {option}] : 값이 숫자인지 검사한다.[length: {option}] : 길이를 받는다.

end

Page 61: Web_06_Ruby On Rails (임시)

테이블간의 관계테이블간의 관계선언을 해주자.

Page 62: Web_06_Ruby On Rails (임시)

User

id user_name password

1 Hiddenest 1234

2 Frostornge 5678

Shopping

User_id name price

1 포카칩 5000

2 허니버터칩 8000

1 창렬칩 12000

2 YEE칩 2222

1 N

User 하나가 shopping을 많이 가지고 있다.

Page 63: Web_06_Ruby On Rails (임시)

Shopping

User_id name price

1 포카칩 5000

2 허니버터칩 8000

1 창렬칩 12000

2 YEE칩 2222

관계선언을 하기 전에Shopping 테이블을 생성해주자

Page 64: Web_06_Ruby On Rails (임시)

[./app/models/user.rb]

class User < ActiveRecord::Base

has_many :shoppings <= shopping 테이블의 값을 많이가지고 있다.

end

[./app/models/shopping.rb]

class Shopping < ActiveRecord::Base

belongs_to :user <= shopping 테이블의 값은 반드시 하나의 user에 속한다.

end

Page 65: Web_06_Ruby On Rails (임시)

관계선언까지 끝냈으면이제 테이블에 데이터를 넣어줄 차례입니다!

Page 66: Web_06_Ruby On Rails (임시)

rails console콘솔 모드로 작동하게 하는 명령어.rails c로 줄여서 사용할 수 있다.

Page 67: Web_06_Ruby On Rails (임시)

데이터 넣기

u = User.new <= 새로운 레코드를 만든다u.user_name = “frostornge” <= 아이디를 넣어주자

u.password = “5678” <= 비밀번호를 넣어주자

u.save <= 이게 안되면 비밀번호의 길이를늘려보자

그리고, [ User.all ]를 해보면 들어간 데이터 값이 출력 될 것이다.

Page 68: Web_06_Ruby On Rails (임시)

여기까지우리가 가르쳐주는 부분은 여기까지입니다!

Page 69: Web_06_Ruby On Rails (임시)

대신 숙제가 있어요!덕덕고에 이은 멘탈강화훈련!

Page 70: Web_06_Ruby On Rails (임시)

타임라인 만들기타임라인 서비스를 만들어오세요!

Page 71: Web_06_Ruby On Rails (임시)

[ 타임라인 – 기능 ]ㄴ글 올리기, 수정, 지우기 기능ㄴ댓글 달기, 수정, 지우기 기능

간단하죠? 하하

Page 72: Web_06_Ruby On Rails (임시)

2주일 드리겠습니다와우 많네요!

Page 73: Web_06_Ruby On Rails (임시)

끝진짜