logo

Post에 대한 CRUD 만들기

이 글의 목표: 이전 글에서 만든 프로젝트에 블로그의 post를 다루는 화면을 추가한다.

글은 제목, 내용, 날짜, 저자를 기록한다.

이전에 목표로 잡은 것 중에 이런 내용이 있었으니 같은 내용이 있으니 터미널에 다음과 같이 입력한다.

mix phx.gen.html Content Post posts title:string content:text author:string published_at:naive_datetime

이것은 mix task 중 Phoenix에서 제공하는 생성기를 활용하여 HTML 리소스용 컨트롤러, 뷰, 템플릿, 스키마 및 컨텍스트를 생성시키는 명령어이다.

자세한 내용은 이 문서를 참고하면 된다. https://hexdocs.pm/phoenix/Mix.Tasks.Phx.Gen.Html.html

명령을 실행시키면 뭔가 잔뜩 만들더니 다음과 같은 내용이 출력된다.

Add the resource to your browser scope in lib/blog_web/router.ex:
    resources "/posts", PostController

Remember to update your repository by running migrations: mix ecto.migrate

시키는대로 lib/blog_web/router.ex 파일에 아래와 같이 resources "/posts", PostController를 추가한다.

scope "/", BlogWeb do
    pipe_through :browser

    get "/", PageController, :home

    # 새로 추가한 코드
    resources "/posts", PostController
end

이후 mix ecto.migrate를 터미널에 입력해서 데이터베이스에 새로운 내용을 업데이트 한다.

mix phx.server로 서버를 실행시키고,

이렇게 글을 작성하고, 읽고, 수정하고, 삭제하는 화면을 만들었다!