Rails view를 만드는 방법 (튜토리얼 3장 정리)

Rails 튜토리얼의 3장 했으므로 정리해 본다. (css는 이번에는 건드리지 않는다)

Rails view-controller 정보



Rails는 MVC 아키텍처이지만 JSP-Servlet(오래된…)처럼 view에 값을 묻어 반환하는 것이 아니라 컨트롤러가 view를 렌더링하여 반환한다. 거친 그림이지만 아래와 같은 이미지.



erb



Rails의 view에서는 html에 ruby ​​코드를 포함하는 'erb'파일이 자주 사용된다.
정직 erb보다 haml 라든지 쪽이 편리할 것 같지만, (haml은 태그 없이 쓸 수 있다)
공부를 위해서, 쓰는 방법이 html에 가까운 erb쪽을 사용해 간다.

erb에 루비 코드를 포함하려면 <% %>를 사용하십시오.
루비 코드의 실행 결과를 태그 안에 포함하고 싶은 경우는 =를 붙여 <%= %>로 한다.

예를 들어, 태그 안에 :title를 yield하고 싶을 때는 아래와 같이 쓴다
<title><%= yield(:title) %></title>

layout



웹 시스템을 작성할 때 페이지의 타이틀이나 레이아웃 등, 모든 페이지에 공통되는 요소가 여러 개 있다.
이것을 하나하나의 erb 파일에 써 가면, 공통 부분이라고 할 때도 모두 편집하지 않으면 안 된다.

예를 들어 10페이지 정도로 구성된 웹페이지의 레이아웃이 바뀌었다면
10 페이지 전부로 수작업으로 편집하는 날개가 되고, 버그의 원인이 될 수도 있다
이러한 공통 부분을 layout에 묶어서 모든 페이지의 수정을 한 번에 끝낼 수 있다.

provide, yield



layout의 공통 부분에 변수를 포함시키고 싶은 경우는, erb로 provide 헬퍼를 사용한다.
erb로 provede한 변수를 layout측에서 yield하면, 그 변수를 평가해 erb에 매입된다.
yield에 인수를 주지 않으면 view를 그대로 평가하십시오.
  • layout
  • <!DOCTYPE html>
    <html>
      <head>
        <title><%= yield(:title) %></title>
      </head>
      <body>
        <%= yield %>
      </body>
    </html>
    
  • view
  • <% provide(:title, "ブログ")%>
    <h1>ホーム</h1>
    <p>
      修得した技術や所感をまとめていきたいと思っています。
      <a href="https://qiita.com/flowerhill">Qiitaもやってます</a>
    </p>
    

    위와 같이 layout과 view를 작성하면, 브라우저로부터 액세스했을 때 다음과 같은 html을 생성한다
    <!DOCTYPE html>
    <html>
      <head>
        <title>ブログ</title>
      </head>
      <body>
        <h1>ホーム</h1>
        <p>
          修得した技術や所感をまとめていきたいと思っています。
          <a href="https://qiita.com/flowerhill">Qiitaもやってます</a>
        </p>
      </body>
    </html>
    

    화면에서 표시하면 이렇게 된다.


    요약



    Rails에서 Controller를 호출했을 때, 어떻게 View를 호출하는지 대략 이해할 수 있었다고 생각한다.
    erb의 쓰는 방법이나 layout의 사용법까지 습득할 수 있었다.

    사실은 헬퍼 메소드나 테스트(rspec)의 쓰는 방법도 정리하고 싶었지만, 길어지기 때문에 일단 여기까지. (솔직히 지쳤어…)

    참고


  • Rails 튜토리얼 3장
  • 좋은 웹페이지 즐겨찾기