48
Layout and Rendering

Layout and rendering

Embed Size (px)

Citation preview

Page 1: Layout and rendering

Layout and Rendering

Page 2: Layout and rendering

Rendering in Rails

Page 3: Layout and rendering

사용자의 요청에 대한 응답을 생성하는 것

Page 4: Layout and rendering

응답을 돌려주는 3가지 방법

Page 5: Layout and rendering

1. head

Page 6: Layout and rendering

본문이 필요 없는 경우

Page 7: Layout and rendering

head :bad_request

Page 8: Layout and rendering

2. redirect_to

Page 9: Layout and rendering

HTTP Redirection

Page 10: Layout and rendering

redirect_to action: :index

Page 11: Layout and rendering

3. render

Page 12: Layout and rendering

본문을 생성할 수 있는 유일한 방법

Page 13: Layout and rendering

CoC

Page 14: Layout and rendering

- 컨트롤러의 액션은 자신과 매칭되는 뷰의 경로를 알고 있다.

controller#action => app/views/controller/action.*.*

Page 15: Layout and rendering

- 요청받은 포맷에 따라서, 그에 알맞는 템플릿을 사용한다.

html => view.html.erbjson => view.json.jbuilderxml => view.xml.builder

Page 16: Layout and rendering

- One Action, One Rendering

if @model.save redirect_to @bookendrender :new

Page 17: Layout and rendering

- One Action, One Rendering

if @model.save redirect_to @bookendrender :new

Page 18: Layout and rendering

- One Action, One Rendering

if @model.save redirect_to @book and returnendrender :new

Page 19: Layout and rendering

render를 호출하는 다양한 방법

Page 20: Layout and rendering

render :editrender action: :editrender "edit"render "edit.html.erb"render action: "edit"render action: "edit.html.erb"render "books/edit"render "books/edit.html.erb"render template: "books/edit"render template: "books/edit.html.erb"render "/path/to/rails/app/views/books/edit"render "/path/to/rails/app/views/books/edit.html.erb"render file: "/path/to/rails/app/views/books/edit"render file: "/path/to/rails/app/views/books/edit.html.erb"render plain: "Text"render json: @modelrender xml: @model

Page 21: Layout and rendering

Layout In Rails

Page 22: Layout and rendering

템플릿을 감싸는 코드

Page 23: Layout and rendering

일반 템플릿이 사진이라면, 레이아웃은 사진을 끼울 액자 틀

Page 24: Layout and rendering

CoC

Page 25: Layout and rendering

- 레이아웃은 컨트롤러 별로

ApplicationController 를 위한 레이아웃 -> views/layouts/application.html.erb

Page 26: Layout and rendering

- 상속 가능

application.html.erb 이 기본 레이아웃으로 사용되는 이유

Page 27: Layout and rendering

- 다양한 호출 방식에 따른 우선 순위

Page 28: Layout and rendering

app/views/layouts/application (기본)app/views/layouts/controllercontroller의 layout 선언render layout: "old"

Page 29: Layout and rendering

app/views/layouts/application (기본)app/views/layouts/controllercontroller의 layout 선언render layout: "old"

파일명 또는 함수명, 또는 block 가능조건부 레이아웃(except:, only:) 가능

Page 30: Layout and rendering

Partial View

Page 31: Layout and rendering

템플릿 파일에서 호출하는 템플릿

Page 32: Layout and rendering

뷰를 Dry하게 만들고 싶을때 사용 가능 ex) form refactoring

Page 33: Layout and rendering

CoC

Page 34: Layout and rendering

- 파일명을 ‘_’로 시작할 것. 호출할 때에는 ‘_’ 없이 호출.

‘_form’ -> render ‘form’

Page 35: Layout and rendering

And…

Page 36: Layout and rendering

- 뷰에서 호출하는 render는 파셜을 사용 - 파셜에도 레이아웃을 사용 가능 - 지역 변수를 넘겨줄 수 있음 - Collection Partial, Spacer Templates…

Page 37: Layout and rendering

yield & content_for

Page 38: Layout and rendering

yield in layout -> 액션의 기본 템플릿을 출력

Page 39: Layout and rendering

yield :symbol 템플릿에 있는 content_for :symbol 블럭을 출력

Page 40: Layout and rendering

… yield … yield :nest_layout …

… content_for :nest_layout do … end

layout.html.erb

view.html.erb

content_for 영역을 제외한 view.html.erb가 출력

Page 41: Layout and rendering

Asset Helper

Page 42: Layout and rendering

외부 컨텐츠 링크를 생성할 경우에 사용

Page 43: Layout and rendering

auto_discovery_link_tag javascript_include_tag stylesheet_link_tag image_tag video_tag audio_tag

Page 44: Layout and rendering

상대경로 사용 시 - “app” 절대경로 사용시

- “http://…”

Page 45: Layout and rendering

상대 경로 사용시 경로로 ‘/assets/~~’ 를 사용하는 태그가 생성되며, 이 링크는 아래의 경로로 라우팅

- app/assets - lib/assets - vendor/assets

Page 46: Layout and rendering

더 자세한 설명은 Rails Guide나 Rails API 를 참조해주세요.

Page 47: Layout and rendering

Q & A

Page 48: Layout and rendering

- END -