Phoenix에서 플래시 메시지 정리

발행: (2026년 5월 1일 PM 12:24 GMT+9)
3 분 소요
원문: Dev.to

Source: Dev.to

소개

Elixir가 어떻게 동작하는지 더 잘 이해하고 Phoenix에 대해 배우기 위해 시스템을 만들기 시작했습니다.

Phoenix는 Ruby용 프레임워크인 Rails와 같은 역할을 하는 Elixir용 프레임워크입니다. 목표는 속도나 유지보수성을 희생하지 않으면서 생산적인 프레임워크가 되는 것입니다.

그럼 바로 Elixir로 내가 읽은 책을 추적하는 간단한 CRUD 애플리케이션을 만들기로 했습니다. 다음 명령어들을 사용했습니다:

# Create the app.
$ mix phx.new booklistx

# Enter the project
cd booklistx

# CRUD generator (Rails scaffold style)
mix phx.gen.html Books Book books title:string

# Create the database and the books table
mix ecto.create
mix ecto.migrate

책 목록을 애플리케이션의 루트로 지정했습니다.

# lib/booklistx_web/router.ex

defmodule BooklistxWeb.Router do
  use BooklistxWeb, :router

  pipeline :browser do
    plug :accepts, ["html"]
    plug :fetch_session
    plug :fetch_flash
    plug :protect_from_forgery
    plug :put_secure_browser_headers
  end

  pipeline :api do
    plug :accepts, ["json"]
  end

  scope "/", BooklistxWeb do
    pipe_through :browser

    # get "/", PageController, :index
  end
end

Phoenix에서 Flash 메시지 정리하기

Rails에서 했던 방식을 비슷하게 적용해 보기로 했습니다.
이 문제를 해결할 수 있는 방법은 여러 가지가 있으며(아마도 더 좋은 방법도 있을 겁니다), 여기서는 간단하고 제가 공부하고 있던 개념들을 활용하는 접근법을 소개합니다.

생성된 파일들

# Create shared_view file
$ touch lib/booklistx_web/shared_view.ex

# Create shared folder
$ mkdir -p lib/booklistx_web/templates/shared

# Create _flash_message.html.eex file
$ touch lib/booklistx_web/templates/shared/_flash_message.html.eex

lib/booklistx_web/shared_view.ex

defmodule BooklistxWeb.SharedView do
  use BooklistxWeb, :view
  import BooklistxWeb.Router.Helpers

  def show_flash_message(conn) do
    conn
    |> get_flash()
    |> flash_message()
  end

  def flash_message(%{"info" => message}) do
    render("_flash_message.html", class: "primary", message: message)
  end

  def flash_message(%{"error" => message}) do
    render("_flash_message.html", class: "danger", message: message)
  end

  def flash_message(_), do: nil
end

여기서는 show_flash_message/1에서 파이프 연산자를 사용하고, flash_message/1에서는 패턴 매칭을 활용하고 있습니다.

Partial: lib/booklistx_web/templates/shared/_flash_message.html.eex

" role="alert">
  

Layout: lib/booklistx_web/templates/layout/app.html.eex


  
    
    
    
    Booklistx · Phoenix Framework

    "/>
    
  

  
    
      
        
          

            - [Get Started](https://hexdocs.pm/phoenix/overview.html)

          

        
        
          

Feel free to leave feedback and suggest improvements.

참고 자료

0 조회
Back to Blog

관련 글

더 보기 »

ASDF로 Elixir 설치하기

저는 Elixir(https://elixir-lang.org/)을 시작했는데, 뭔가를 하기 전에 먼저 설치해야 했습니다. 저는 asdf(https://asdf-vm.com/)를 사용해서 언어를 관리하기 때문에...

DOM

getElementById이란 무엇인가? 고유한 id 속성을 사용하여 단일 HTML 요소를 선택하는 데 사용됩니다. 일치하는 경우 Element object를 반환하고, 그렇지 않으면…