Ruby on Rails 기본 - 뷰
보통 뷰는 ERB(Embedded Ruby)를 사용해서 출력한다. ERB는 Ruby 스크립트를 삽입한 구조이다.
템플릿 변수를 이용하면 컨트롤러에서 뷰로 데이터를 전달할 수 있다.
물론 CoC를 기억하자. 뷰로 쓰일 템플릿 파일 이름을 신경써줘야한다. 템플릿 파일은 /app/views
폴더 내부에 /<컨트롤러 이름>/<액션 이름>.html.erb
라는 이름으로 생성해야한다.
위처럼 입력하면 @msg 템플릿 변수로 전달받은 값을 출력한다.
ERB의 규칙 메모
<% [임의의 코드] %>
: 블록 내부의 코드를 실행. 따라서 주로 연산 또는 제어 구문을 입력할 때 사용한다.<% [무언가 값을 리턴하는 식] %>
: 블록 내부의 값을 출력하는 것. 템플릿 파일의 목적은 화면에 무언가를 출력하는 것이므로 조건 분기 또는 반복문 등의 제어문을 제외하면 대부분 이걸 사용한다.<% ... - %>
이나<%= ... -%>
처럼 스크립트 블록 뒤에 - 기호를 붙이면 블록 뒤의 공백과 개행을 제거할 수 있다.
참고로 액션 메서드를 생략할 수 있는데, 이 경우 바로 템플릿 파일을 찾아 실행한다.
한편 라우트로 접근한 결과를 웹 브라우저의 소스 보기로 확인해보면 템플릿 파일에서 정의한 것보다 많은 내용이 출력되는 것을 확인할 수 있다. 자동으로 추가된 내용은 /app.views/layouts/application.html.erb
에 정의되어 있는 것이다. 이처럼 rails 에서는 기본적으로 application.html.erb
의 <%= yield %>
에 개별적인 템플릿을 넣어 최종 출력을 생성한다. 헤더나 푸터, 메뉴 같은 사이트 공통 디자인을 한꺼번에 적용할 수 있다. 외곽 요소를 사용할 때는 레이아웃을 사용하자.
ERB에서의 주석
<%# ... %>
: 블록 내부의 모든 것을 주석으로 간주#
:<% ... %>
구문 안에서 사용할 수 있고,#
위치부터 해당 줄의 마지막까지를 주석으로 간주한다.<% if false %>
...<% end %>
: 절대 실행안되는 조건 분기안에 넣어버리는 방식으로 여러줄을 주석처리할 수 있다. 다만 조건 분기와 한눈에 분기하기가 어렵다.<% =begin %>
...<% =end %>
: 문서화할 내용을 정의하는 구문. 아래처럼=begin
과=end
가 반드시 행 제일 앞에 붙어있어야한다.<!--... -->
: 기본적으로 ERB 자체가 HTML을 기반으로 만들어진 템플릿 엔진이므로 HTML 주석을 이용할 수 있다.
Last updated