Hotwire Combobox를 활용한 다중 선택 구현

Multi Select with Hotwire Combobox | Hans Schnedlitz

작성자
발행일
2025년 07월 05일

핵심 요약

  • 1 Hotwire Combobox를 사용하여 Ruby on Rails 애플리케이션에서 다중 선택 및 자동 완성 기능을 효율적으로 구현하는 방법을 설명합니다.
  • 2 기존 스피커 선택 외에 자유 텍스트 입력으로 새로운 스피커를 추가하고, 최종 YAML에 스피커 이름만 반영하도록 값을 제어하는 방법을 다룹니다.
  • 3 Hotwire Combobox의 제한된 문서에도 불구하고 소스 코드 예제를 통해 다중 선택, 자유 텍스트 입력 및 값 매핑 기능을 성공적으로 통합했습니다.

도입

이 글은 RubyEvents 플랫폼에서 강연 기여 프로세스의 편의성을 높이기 위해 Hotwire Combobox를 활용한 다중 선택 기능을 구현한 경험을 공유합니다. 기존의 수동 YAML 파일 업데이트 방식의 비효율성을 개선하고자, 이벤트 및 강연 세부 정보를 입력하면 필요한 YAML을 자동으로 생성하는 웹 폼을 도입했습니다. 이 폼의 핵심 개선 사항 중 하나는 강연자 선택 기능으로, 초기 쉼표로 구분된 이름 목록 입력 방식에서 벗어나 검색 및 자동 완성 기능을 제공하는 Hotwire Combobox를 적용하게 된 배경을 설명합니다.

Hotwire Combobox를 이용한 다중 선택 기능 구현은 다음 주요 단계를 통해 진행되었습니다.

1. 자동 완성 및 다중 선택 구현

  • speakers_search 액션과 async_combobox_options 헬퍼로 강연자 이름 검색 및 자동 완성을 구현했습니다.
  • form.comboboxmultiselect_chip_src 옵션을 추가하고, speakers_search_chips 액션에서 combobox_selection_chips_for 헬퍼를 활용하여 선택된 강연자들을 칩 형태로 표시, 다중 선택 기능을 활성화했습니다. Hotwire Combobox의 test/dummy 앱 예제를 참고했습니다.

2. 자유 텍스트 입력 및 신규 강연자 처리

  • form.comboboxname_when_newfree_text: true 옵션을 설정하여 새로운 강연자 직접 입력을 지원했습니다.
  • speakers_search_chips 액션에서 params[:combobox_values] 처리 시, ID로 Speaker 모델을 찾지 못하면 OpenStruct 객체를 생성하여 자유 텍스트 입력을 모델처럼 다루도록 매핑했습니다.

3. Combobox 값 제어 및 YAML 매핑

  • 최종 YAML에 강연자 이름이 필요했으므로, async_combobox_options 헬퍼에 value: proc { |element| element.name } 옵션을 추가했습니다.
  • 이를 통해 Combobox 숨겨진 입력 필드에 ID 대신 이름이 저장되도록 하여, 컨트롤러에서 추가 매핑 없이 원하는 데이터를 직접 얻을 수 있었습니다.

결론

Hotwire Combobox를 활용하여 RubyEvents의 강연자 선택 기능을 성공적으로 개선했습니다. 이 과정에서 다중 선택, 자유 텍스트 입력, 그리고 최종 데이터 출력을 위한 값 매핑 등 다양한 요구사항을 충족시켰습니다. Hotwire Combobox의 문서가 다소 부족했으나, 소스 코드와 테스트 예제를 통해 필요한 기능을 구현할 수 있었습니다. 이 경험은 사용자 경험을 향상시키고 개발 효율성을 높이는 데 기여했으며, 특히 복잡한 폼 요소를 처리하는 Hotwire의 강력함을 다시 한번 확인하는 계기가 되었습니다.

댓글 0

댓글 작성

0/1000
정중하고 건설적인 댓글을 작성해 주세요.

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!