layout and rendering

Post on 11-Feb-2017

206 Views

Category:

Software

6 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Layout and Rendering

Rendering in Rails

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

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

1. head

본문이 필요 없는 경우

head :bad_request

2. redirect_to

HTTP Redirection

redirect_to action: :index

3. render

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

CoC

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

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

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

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

- One Action, One Rendering

if @model.save redirect_to @bookendrender :new

- One Action, One Rendering

if @model.save redirect_to @bookendrender :new

- One Action, One Rendering

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

render를 호출하는 다양한 방법

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

Layout In Rails

템플릿을 감싸는 코드

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

CoC

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

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

- 상속 가능

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

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

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

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

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

Partial View

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

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

CoC

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

‘_form’ -> render ‘form’

And…

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

yield & content_for

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

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

… yield … yield :nest_layout …

… content_for :nest_layout do … end

layout.html.erb

view.html.erb

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

Asset Helper

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

auto_discovery_link_tag javascript_include_tag stylesheet_link_tag image_tag video_tag audio_tag

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

- “http://…”

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

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

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

Q & A

- END -

top related