스캐폴딩 기능을 사용한 Rails 개발 기초

스캐폴딩으로 빠르게 CRUD 기능을 갖춘 컨트롤러 클래스를 사용할 수 있다.스캐폴딩 기능을 사용할 때도 rails genrate 명령어를 사용한다.

rails generate scaffold name field:type [...] [option]

한방에 해결! 단, 마이그레이션으로 데이터를 생성하는 것만은 rake 명령어로 별도로 실행해줘야한다.

rake db:migrate

스캐폴딩으로 애플리케이션을 생성하면 config/routes.rb에 resources 메서드가 추가된다.

책에서는 rake routes 로 라우팅을 확인하는데 rails routes 명령어로 라우팅을 확인할 수 있다. 바뀐 듯.

URL 요청에 아래처럼 .json 을 요청할 수도 있는데, 이 때 JSON 형식으로 출력할 때 사용하는 템플릿은 <컨트롤러 이름>/<액션이름>.json.builder 이름으로 app/views 폴더에 생성된다.

뷰 헬퍼 사용하기

뷰 헬퍼(View Helper)는 템플리 파일을 작성할 때 도움을 주는 메서드다.

뷰 헬퍼 중 link_to 메서드의 url로 모델 객체를 전달하면 Rails는 해당 객체의 id 속성을 이용해서 링크를 만든다.

<%= link_to 'Show', book %> #/books/1 형태의 경로 생성됨.

예제에서는 라우터 정의에 따라 아래처럼 뷰 헬퍼가 자동으로 정의되었다.

헬퍼 이름

경로

book_path

/books

book_path(id)

/books/:id

new_book_path

/books/new

edit_book_path(id)

/books/:id/edit

상세페이지 만들기

new.html.erb 에서는 아래처럼 'form'과 'Back' 템플릿을 불러와서 화면을 구성한다.

<h1>New Book</h1>

<%= render 'form', book: @book %>

<%= link_to 'Back', books_path %>

이 때 불러와지는 템플릿을 부분 템플릿이라고 부르며, 부분 템플릿을 출력할 때는 render 메서드를 활용한다.

부분 템플릿은 _<이름>.html.erb 형태로 생성해야한다.

Last updated