Web_07_Rails Advanced

Post on 08-Aug-2015

227 views 1 download

Transcript of Web_07_Rails Advanced

Rails AdvancedHello, World!

Contents

• Ajax

• Partial Template

• Get Value By Model

• Encryption

하기전에..예제에 있는 파일들은 다 만드세요

AjaxBrowser와 Server가 내부적으로 통신

로딩없이 서비스를 사용할 수 있다.

BrowserAjax engine

Web server

Respond_to

Action에 요청을 보낼 때,

요청을 받은 Action에서 응답을 할 때 사용한다.

Example

[/app/controller/main_controller.rb]

def second

respond_to do |format|

format.html

format.js

….

end

end

> html로 응답

> Ajax request를

javascript 템플릿을 render하며 응답

Format.js

Format.js가 찾는 템플릿은

따로 설정해놓지 않으면, request된 action의 이름과 동일하다.

Format.js

View/[controller_name]/[action_name.js.erb]

Example

[/app/views/main/second.js.erb]

//jquery, javascript codes here!

$(‘.hello’).html(“안녕하세요!”);

//또는

document.getElementByClassName(‘hello’).innerHTML=“안녕하세요!”

Submit을 누르면 새로고침 없이

밑에 있는 값이 바뀌는 것을 볼 수 있다.

안되면 손드세요

Partial Template

Html 템플릿을 함수처럼 불러와 사용할 수 있다.

Basic

Partial Template은 파일 이름 앞에 무조건

‘_’가 붙어야 한다.

Example

[/app/views/main/_foo.html.erb]

<p>잘됨?</p>

불러오는 법

<%= render partial: “template_name (맨앞‘_’제외)” %>

데이터를 전송?

object: [value]를 사용하자.

Example

[/app/views/main/index.html.erb]

<%= render partial: “foo” %>

잘됨? 이 출력되면 성공

Get Value By Model

제곧내

Example

[/app/controllers/main_controller.rb]

def first

@all_user = User.all //모든 User데이터 가져옴

@part_user = User.find(1) //id가 1인 User가져오기

@if_user = User.find_by(user_name: ‘frostornge’)

end

사용하기

Example

[/app/views/main/index.html.erb]

<% @all_user.each do |u| %>

<p><%= u.user_name %></p>

<p><%= u.password %></p>

<% end %>

User의 name과 password가 잘 출력되면 성공

Encryption

암호화

Digest

Ruby시간에 못해서 내가 함

Example

require ‘digest’

gentle = “This is password”

tough = Digest::[암호화 방식].hexdigest(gentle)

Puts tough

Puts gentle

This is password

eb20f29e2c9d9c3fe4106e31d4ffdcff

6fd901953649351902866c1b583c791f9bf7…

출력 = 성공

숙제

간단한 서비스

• 글 올리기 기능 (순수 글)

• 회원가입 기능

• 아이디 중복 X

• 비밀번호는 6자 이하 X

• 계신지 확인

• 로그인 기능

User

user_name password

Post

user_id title content

DB구조

드디어

6/13일까지

노력해 보세요