【Ruby on Rails】 레이아웃 템플릿 비망록

초고입니다. 미비가 있으면 지적해 주시면 다행입니다.

Ruby on Rails를 공부 중입니다. 뷰 파일로 코딩한 내용이 왜 DOCTYPE 선언이나 HTML 태그로 둘러싸지 않은데 브라우저에서 제대로 표시되는지 불분명했습니다만, 레이아웃 템플릿을 이해하고 깨끗이 했으므로 비망록으로 남겨 둡니다.

레이아웃 템플릿이란?



rails로 어플리케이션을 작성했을 때에, 다음의 디렉토리에 자동적으로 작성되는 파일입니다.
app/views/layouts/application.html.erb

통상, 컨트롤러로 정의한 액션으로부터, 뷰 파일이 있는 경우는 그 파일이 불려 있는 것처럼 보입니다만, 실제로는 레이아웃 템플릿안에 작성한 뷰 파일이 임베드되어 돌려주고 있다고 하는 것.

예) posts라는 컨트롤러를 작성한 경우
app/controllers/posts_controller.rb

posts_controller.rb
class PostsController < ApplicationController
  def index
  end
end

app/views/posts/index.html.erb

index.html.erb
<h1>トップページ</h1>

실제로, 응답으로서 돌려주고 있는 것은, 하기 템플릿 파일의 태그내에 있는 <%= yield%>에 불려 간 뷰 파일 index.html.erb가 매입되어 돌려주어지고 있다고 하는 것.

app/views/layouts/application.html.erb

application.html.erb
<!DOCTYPE html>
<html>
  <head>
    <title>FirstApp</title>
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
    <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
  </head>

  <body>
    <%= yield %>
  </body>
</html>

좋은 웹페이지 즐겨찾기