2011-03-29 5 views
8

두문자어로 활성 레코드를 정의하려고합니다. RvPark (오락 용 차량 공원). 클래스 이름의 제목을 정하면 'Rv Park'를 얻습니다. 정말로 'RV 파크'여야합니다. 이것을 할 수있는 좋은 방법이 있습니까? 이 모델은 다른 모델과 코드를 공유하기 때문에 일반적인 솔루션을 만들어야하지만 필자는 그 중 하나를 생각해 내지 못했습니다.레일즈에서 머리 글자 어에 제목 사용하기

나는 이것에 대한 토론을 보았지만 나에게 도움이되는 해결책은 없었다. 모든 통찰력이 인정됩니다.

https://rails.lighthouseapp.com/projects/8994/tickets/2944-titleize-doesnt-take-all-uppercase-words-into-account

답변

4

UPDATE : 약어 지원 was added to the Rails Inflector 나는이 게시 한 후. Rails 3.2 이상에 대한 @ Anson의 대답을 참조하십시오.


titleize 위해 설계되지 않았 음을 가장자리의 경우처럼 보인다. 문제는 capitalize 내부 호출은 항상 RV를 Rv로 바꿉니다.

내부적으로 self.class.titleize을 호출하는 모델에 대해 일반 이름 함수를 만든 다음 RVPark 모델에서 오버로드합니다.

+0

고마워요, 그게 제가 끝내 준 것입니다. –

+2

다음은 좀 더 견고한'titleize'입니다 : https://github.com/granth/titleize –

+0

@GabeKopley 질문의 시나리오에 github.com/granth/titleize 보석은 어떻게 작동합니까? 그것은 정상적인 제목으로 작동하는 것 같습니다 – RAJ

13

titleize 메서드를 제공하는 ActiveSupport::Inflector을 구성하여이 작업을 수행 할 수 있습니다. 초기화 도구에 자신의 inflections을 정의하기 만하면됩니다.

# config/initializers/inflections.rb 
ActiveSupport::Inflector.inflections do |inflect| 
    inflect.acronym 'RV' 
end 

변경 사항을 적용하려면 앱을 다시 시작하십시오. 이제 titleize은 "RV"를 처리하는 방법을 알고 있습니다. 레일스 콘솔을 실행 해보고 체크 아웃하십시오 :

> "RvPark".titleize 
=> "RV Park" 
> "rv".titleize 
=> "RV" 

굴절과 함께 할 수있는 더 멋진 것들을 보려면 링크 된 문서를보십시오.

관련 문제