Computer >> 컴퓨터 >  >> 프로그램 작성 >> Ruby

Rails 도우미를 사용하는 방법(전체 가이드)

Rails의 도우미란 무엇인가요?

도우미는 재사용 가능한 코드를 공유하기 위해 Rails 보기에서 (대부분) 사용되는 방법입니다. Rails는 내장된 도우미 메서드 세트와 함께 제공됩니다.

이러한 기본 제공 도우미 중 하나는 time_ago_in_words입니다. .

예시 :

time_ago_in_words(Time.now)# "1분 미만"time_ago_in_words(Time.now + 60)# "1분"time_ago_in_words(Time.now + 600)# "10분"

이 방법은 이 특정 형식으로 시간을 표시하려는 경우에 유용합니다.

또 다른 Rails 보기 도우미는 number_to_human입니다. .

:

number_to_human(10_000)# "1만"

숫자를 가져 와서 읽는 것처럼 인쇄하여 더 인간적인 느낌을 주고 싶을 때 유용합니다.

Ruby on Rails 문서에서 더 많은 도우미를 찾을 수 있습니다.

하지만 직접 작성할 수 있다는 사실을 알고 계셨습니까?

자신만의 도우미 메소드 작성

사용자 정의 도우미 메서드를 작성하려는 경우 올바른 디렉터리 경로는 app/helpers입니다. .

도우미 모듈 안에 도우미를 작성합니다. .

모든 Rails 애플리케이션은 기본적으로 ApplicationHelper라는 기본 도우미 모듈과 함께 제공됩니다. .

여기에서 도우미 메서드를 추가할 수 있습니다.

이러한 메서드는 모든 보기에서 자동으로 사용할 수 있습니다. 나중에 컨트롤러에서 사용하는 방법과 그것이 나쁜 생각인 이유를 배우게 됩니다.

ApplicationHelper에 모든 도우미를 작성할 수 있습니다. .

하지만 다른 옵션이 있습니다...

메서드를 더 잘 구성할 수 있도록 도우미 모듈을 만들 수 있습니다.

지침 :

  • app/helpers 아래에 새 파일 만들기
  • 이름을 user_helper.rb와 같이 지정합니다.
  • 파일 이름과 일치하는 새 모듈 추가

:

# app/helpers/user_helper.rbmodule UserHelper def format_name(user) if user.gender =="M" "Mr. #{user.name}" else "Ms. #{user.name}" end end 

이 코드는 성별에 따라 공식적인 방식으로 사람을 언급하는 데 사용할 수 있습니다.

주요 이점은 무엇입니까?

필요할 때나 코드를 변경해야 할 때 다른 보기에서 이 논리를 반복할 필요가 없습니다. 한 곳에서만 변경하면 됩니다.

아주 좋아요!

새 도우미 모듈 사용

보기에서 도우미 메서드를 사용할 수 있습니다.

좋아요 :

<%=format_name(@user) %>

쉽죠?

보기 외부에서 도우미를 사용하려면 다른 것이 필요합니다.

컨트롤러에서 도우미를 사용하는 방법

흔하지는 않지만 컨트롤러 작업에서 도우미 메서드를 사용하는 것이 가능합니다.

Rails 5 이전에는 도우미 모듈을 포함해야 했습니다.

최신 버전에서는 helpers와 함께 컨트롤러의 도우미를 사용할 수 있습니다. (복수) 목적어.

좋아요 :

클래스 UsersController def 인덱스 helpers.time_ago_in_words(Time.now) endend

이렇게 하면 컨트롤러에서 도우미를 사용할 수 있습니다. 하지만 디자인 문제일 수 있으므로 이 작업을 수행하기 전에 다시 한 번 생각하십시오.

대신 일반 Ruby 개체를 사용하는 것이 좋습니다.

Rails 콘솔의 재미

저는 Rails 콘솔(Rails 앱이 로드된 irb)을 사용하여 방법을 시도하고 다양한 작업을 하는 것을 좋아합니다.

도우미가 포함되었습니다!

helper.method_name을 사용하여 콘솔에서 도우미를 사용할 수 있습니다. .

오류 메시지가 표시되지 않도록 "helper"의 단수형에 주목하세요. 그리고 콘솔은 코드 변경 사항을 자동으로 다시 로드하지 않는다는 것을 기억하십시오.

Rails View Helpers 작성을 위한 모범 사례

도우미 메서드는 언제 만들어야 하나요?

HTML 비트를 생성하는 논리가 있을 때마다.

일반적으로 이것은 두 가지 범주 중 하나에 속합니다. 하나는 문자열 형식이고 다른 하나는 조건부 페이지 요소입니다.

또 다른 팁...

좋은 도우미를 작성하려면 인스턴스 변수를 사용하지 마십시오. 현재 보기에서는 사용할 수 있지만 다른 보기에는 없을 수 있습니다.

누락된 변수로 인해 오류가 발생합니다.

해결책은?

매개변수를 사용하여 메소드에 필요한 모든 데이터가 명확하고 명시적되도록 합니다. .

# 잘못된 waydef eat_healthy @fruit.eatend# 대신 하세요def eat_healthy(fruit)fruit.eatend

마지막 팁은 도우미를 모듈로 나누는 것입니다. 여기서 각 모듈 이름은 어떤 종류의 메서드가 포함되어 있는지 명확하게 설명합니다.

하지만 :

이것은 중복된 메소드 이름에는 도움이 되지 않으며, 이는 오류 및 혼란을 초래할 수 있습니다.

모든 도우미는 고유한 이름을 가져야 합니다. .

대안으로 이 가이드에 설명된 대로 프리젠터 개체를 사용해 보십시오.

요약

Rails의 도우미에 대해 배웠습니다! 보기에서 복잡한 논리의 형식을 지정하고 처리하는 데 사용할 수 있는 유틸리티 메서드 집합입니다.

이제 자신만의 도우미를 만들 차례입니다.

읽어주셔서 감사합니다 🙂