Rails 개발에서 가장 자주 사용되는 헬퍼 메서드 중 하나가 바로 link_to입니다. 모든 Rails 애플리케이션에서 링크를 생성할 때 필수적으로 활용되는 이 메서드는 어떻게 동작할까요?
link_to의 기본 개념부터 실전에서 유용하게 쓸 수 있는 다양한 옵션까지 지금부터 하나씩 살펴보겠습니다.
link_to란 무엇인가?
웹사이트가 동작하는 핵심은 페이지 간의 연결, 즉 링크입니다. 사용자가 한 페이지에서 다른 페이지로 이동하려면 반드시 링크가 필요합니다.
일반 HTML에서는 링크를 다음과 같이 작성합니다:
<a href="/ruby-book">Improve Your Ruby Skills</a>
하지만 Rails에서는 이렇게 작성합니다:
<%= link_to "Improve Your Ruby Skills", "/ruby-book" %>
왜 굳이 link_to를 사용해야 할까요? 그 이유는 Rails가 라우트(routes) 시스템을 사용하기 때문입니다.
Rails에서는 _path 헬퍼 메서드를 활용해 링크의 대상(href)을 지정하는 것이 좋습니다. link_to를 사용하면 값을 직접 보간(interpolation)하지 않아도 되기 때문에 훨씬 간편합니다.
예를 들어 다음과 같습니다:
<a href="<%= book_path(@book) %>">Improve Your Ruby Skills</a>
이제 link_to 메서드가 지원하는 가장 유용한 옵션들을 자세히 알아보겠습니다.
Rails link_to 옵션과 인자 정리
link_to의 첫 번째 인자는 링크에 표시될 텍스트입니다.
그렇다면 두 번째 인자는 무엇일까요? 바로 연결할 URL입니다.
URL을 직접 하드코딩할 수도 있지만, 대부분의 경우 Rails 모델 객체나 _path 메서드를 사용하는 것이 좋습니다. Rails 컨벤션을 잘 따르면 Rails가 알아서 경로를 처리해 줍니다.
예시:
<%= link_to "Improve Your Ruby Skills", book_path(@book) %>
또는 더 간결하게:
<%= link_to "Improve Your Ruby Skills", @book %>
단수형과 복수형, 언제 어떤 것을 사용할까?
- 단수형(singular): 특정 리소스(예: 개별 책)를 참조할 때 사용
- 복수형(plural): 리소스 컬렉션(예: 전체 책 목록)을 참조할 때 사용
예제:
# 복수형 <%= link_to "All Books", books_path %> # 단수형 <%= link_to "Edit Book", edit_book_path(@book) %>
rake routes 명령어로 라우트 목록을 확인하는 것도 큰 도움이 됩니다. 출력 결과의 첫 번째 열에 있는 이름(예: edit_book) 뒤에 _path를 붙이면 링크에서 바로 사용할 수 있습니다.
확인 창이 있는 삭제 링크 만들기
실무에서 특히 유용한 두 가지 옵션이 있습니다:
confirm: 클릭 시 확인 대화상자 표시disable_with: 요청 처리 중일 때 버튼에 표시될 텍스트 지정
예제:
<%= link_to "Delete Book", @book, method: :delete, data: { confirm: "Are you sure?", disable_with: "Processing..." } %>
링크의 기본 HTTP 액션은 GET 요청입니다. 따라서 DELETE 액션을 사용하려면 위 예제처럼 명시적으로 지정해 주어야 합니다.
그렇다면 이전 페이지로 돌아가는 링크는 어떻게 만들 수 있을까요?
다음과 같이 간단하게 처리할 수 있습니다:
<%= link_to "Back", :back %>
CSS 클래스와 HTML 속성 추가 방법
link_to를 사용하면 CSS를 통해 링크의 스타일을 자유롭게 꾸밀 수 있습니다.
예를 들어:
<%= link_to "Get More Books", books_path, class: "index-link" %>
다음과 같은 CSS가 있다면:
.index-link {
color: blue;
padding: 10px;
}
파란색 배경 패딩이 적용된 스타일리시한 링크가 완성됩니다.
id 같은 추가 HTML 속성이 필요하다면, 링크 텍스트와 URL 뒤에 원하는 속성을 나열하면 됩니다.
쿼리 파라미터와 앵커 링크 생성하기
link_to의 또 다른 강력한 기능은 쿼리 파라미터(query parameters)와 앵커(anchor)가 포함된 링크를 만들 수 있다는 점입니다.
왜 유용할까요? 사용자가 링크를 클릭하면 컨트롤러에서 이 추가 데이터에 접근할 수 있기 때문입니다.
다음과 같은 URL을 만들고 싶다면:
"/search?q=all"
이렇게 작성하면 됩니다:
<%= link_to "Search ALL", search_path(q: "all") %>
앵커가 포함된 이런 URL이라면:
"/books#programming"
다음과 같이 처리할 수 있습니다:
<%= link_to "Programming Books", books_path(anchor: "programming") %>
URL 헬퍼(_path / _url)와 결합하면 link_to는 어떤 상황에서도 필요한 유연성을 제공합니다.
이미지에 링크 걸기: 블록 활용법
많은 개발자들이 모르는 사실인데, link_to는 선택적 블록(optional block)을 받을 수 있습니다. 이를 활용하면 더 복잡한 시나리오도 손쉽게 구현할 수 있습니다.
대표적인 예가 이미지에 링크를 거는 것입니다:
<%= link_to books_path do %> <%= image_tag "Book Collection" %> <% end %>
이 예제에서처럼 블록 안의 내용이 링크 텍스트가 되며, 이미지나 다른 어떤 HTML 요소든 클릭 가능한 영역으로 만들 수 있습니다.
마치며
지금까지 Rails의 link_to 메서드에 대해 자세히 알아보았습니다. 기본적인 링크 생성부터 확인 창, CSS 스타일링, 쿼리 파라미터, 이미지 링크까지 실무에서 바로 활용할 수 있는 내용들이었습니다.
이 글이 도움이 되었다면 Ruby 실력을 한 단계 끌어올릴 수 있는 좋은 기회가 될 것입니다. 읽어주셔서 감사합니다 🙂