더북(TheBook)

Create 액션 메서드 작성

두 번째 액션은 사용자가 폼에 전송한 post 객체를 데이터베이스에 저장하는 Create 액션이다. Post 컨트롤러에 다음 코드를 추가하자.

▼ app/controllers/post.go

func (c Post) Create(title, body string) revel.Result {
    // 데이터베이스에 포스트 내용 저장
    _, err := c.Txn.Exec("insert into posts(title, body, created_at, updated_at)
    values(?,?,?,?)", title, body, time.Now(), time.Now())
     
    if err != nil {
        panic(err)
    }
     
    // 뷰에 Flash 메시지 전달
    c.Flash.Success("포스트 작성 완료")
     
    // 포스트 목록 화면으로 이동
    return c.Redirect(routes.Post.Index())
}

Post 컨트롤러의 Create 액션 메서드는 전송된 폼 정보로 새로운 포스트를 생성한다. 데이터베이스에 성공적으로 저장되면 뷰에 Flash 메시지를 전달한 후 포스트 목록 화면으로 이동한다.

revel 컨트롤러의 멤버 필드로 정의되어 있는 Flash 필드는 일회성 메시지를 전달할 때 사용하는 뷰이다. 컨트롤러에서 c.Flash.Error("에러!") 또는 c.Flash.Success("성공!") 같은 형태로 메시지를 전달하면, 뷰에서는 {{.flash.success}} 또는 {{.flash.error}} 같은 방식으로 전달된 메시지를 사용할 수 있다. Flash에 대한 상세한 내용은 Revel 공식 문서를 참고하기 바란다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.