[RUBY-ON-RAILS] 레일 (루비) : 예 / 아니오 대신 참의 / 거짓
RUBY-ON-RAILS레일 (루비) : 예 / 아니오 대신 참의 / 거짓
나는 쉽게 기능을 쓸 수 있습니다 알고 응용 프로그램 컨트롤러에 넣어,하지만 난 오히려없는 이미이 작업을 수행합니다 뭔가가있는 경우 것입니다. 기본적으로 내가 좋아하는 뭔가를 갖고 싶어 :
>> boolean_variable?
=> true
>> boolean_variable?.yesno
=> yes
>> boolean_variable?.yesno.capitalize
=> Yes
레일 프레임 워크에서 이미이 같은 뭔가가있다?
해결법
-
==============================
1.이러한 내장 도우미가 존재하지만 하찮게 쉽게 구현하는 방법입니다 :
이러한 내장 도우미가 존재하지만 하찮게 쉽게 구현하는 방법입니다 :
class TrueClass def yesno "Yes" end end class FalseClass def yesno "No" end end
-
==============================
2.레일에 뭔가가 없습니다.
레일에 뭔가가 없습니다.
ApplicationHelper에하는 방법을하는 것입니다 비슷한 달성하기 위해 참 / 거짓 클래스에 추가하는 것보다 더 좋은 방법 :
def human_boolean(boolean) boolean ? 'Yes' : 'No' end
그런 다음보기
<%= human_boolean(boolean_youre_checking) %>
클래스에 내장하는 메소드를 추가하는 것은 일반적으로 눈살을 찌푸리게한다. 또한, 레일 '헬퍼 밀접하게이 접근 맞는 원시 좋아한다 ().
그들은 쉽게 유지 (또는 테스트)하지 않는 한 또 하나의 오프 좋은 생각이 아니다.
-
==============================
3.인간화 부울 : 그 지금은 보석이있다
인간화 부울 : 그 지금은 보석이있다
그럼 그냥 할 :
true.humanize # => "Yes" false.humanize # => "No"
쉽게 en.boolean.yes 및 en.boolean.no 번역 (또는 당신이 좋아하는 어떤 로케일)를 포함하여 반환 된 문자열을 변경할 수 있도록 그것은 또한 국제화를 지원합니다
-
==============================
4.양자 택일로, 당신은 또한 다음과 같은 귀하의 의견 하나 오프를 할 수 :
양자 택일로, 당신은 또한 다음과 같은 귀하의 의견 하나 오프를 할 수 :
<%= item.bool_field? ? 'yes' : 'no' %>
-
==============================
5.humanize_boolean 보석은 내가 피하기 위해 선호하는 간접적 인 확장이다 TrueClass, FalseClass 및 NilClass을 확장합니다.
humanize_boolean 보석은 내가 피하기 위해 선호하는 간접적 인 확장이다 TrueClass, FalseClass 및 NilClass을 확장합니다.
나는 최고 수준의 번역이 도우미는 변화에 친화적 인 절연, 그리고 당신이 그것을 아무것도 truthy 또는 falsey을 제공 할 수 있습니다 발견했습니다 :
# app/helpers/application_helper.rb class ApplicationHelper def humanize_boolean(boolean) I18n.t((!!boolean).to_s) end end # config/locales/en.yml en: :true: 'Yes' :false: 'No'
! (부울) 이렇게하면 번역 문자열을 만들 때 인수로 전달 된 변수 중 하나 "true"또는 "false"값 보장하지만를 .to_s.
사용:
# app/views/chalets/show.html.erb <%= humanize_boolean(chalet.rentable?) %>
-
==============================
6.나는 이전 답변에서 일반화 된 솔루션을 사랑하지만 당신이 선택적으로 귀하의 의견에 부울의 인간화 버전을 사용하려는 경우, 다음을 수행 할 수 있습니다 :
나는 이전 답변에서 일반화 된 솔루션을 사랑하지만 당신이 선택적으로 귀하의 의견에 부울의 인간화 버전을 사용하려는 경우, 다음을 수행 할 수 있습니다 :
나는 도우미 / application_helper.rb에이를 넣어 :
module ApplicationHelper def humanize_boolean(value) case value when true "Yes" when false "No" when nil "Undefined" else "Invalid" end end end
그런 다음 뷰에서이 예제와 같이 호출 할 수 있습니다 :
Published: <%= humanize_boolean(post.published) %>
from https://stackoverflow.com/questions/3664181/rails-or-ruby-yes-no-instead-of-true-false by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 레일에서 검증되지 않은 누락 된 파일을 간단한 COV 보석 (0) | 2020.03.03 |
---|---|
[RUBY-ON-RAILS] 루비 어레이 작성, VS Array.new [] (0) | 2020.03.03 |
[RUBY-ON-RAILS] 내가 어떻게 비활성화 당 액션 기준으로 루비 온 레일즈 로깅? (0) | 2020.03.03 |
[RUBY-ON-RAILS] 유증과 세션 길이 설정 (0) | 2020.03.03 |
[RUBY-ON-RAILS] 3 레일 : 현재 사용자의 시간대로 시간대를 설정 (0) | 2020.03.03 |