2011-02-08 2 views
0

부울 값으로 데이터베이스 테이블을 평가하는 뷰가 있습니다. 그 분야는 누가 그것을 생각했는지 진실하거나 거짓인지를 포함합니다.뷰에서 참 및 거짓 출력을 Rails로 바꿉니다.

이 텍스트를 예 및 아니요와 같이 바꿔야합니다. 또는 Ja und Nein. 상관 없어요. 레일즈가 그렇게 할 방법이 있습니까? 뷰에서

+0

[레일 (루비)의 가능한 중복 : 예/아니오 대신 진정한 /False](http://stackoverflow.com/questions/3664181/rails-or-ruby-yes-no-instead-of-true-false) – Drenmi

답변

8
<%= @attribute ? 'Yes' : 'No' %> 

모델에있을 수 있습니다이를 넣어 좋은 장소, 그래서

class Whatever < ActiveRecord::Base 
    def something_yn 
    attribute ? 'Yes' : 'No' 
    end 
end 

: 그리고

<%= @instance.something_yn %> 
+0

예를 들어 주셔서 감사합니다. 그러나 나는 그것을 정말로 얻지 못한다 .-D. 내 견해로는 false 또는 true를 출력하는 @ model.bool_status와 같은 것이 있습니다. 어떻게 번역 할 수 있습니까? –

+0

@ulf, DigitalRoss가 제안하는 것을 시도해 본다면 어느 쪽이든 당신이 바라는 것을보기 위해 얻는 것을 볼 수있을 것입니다. 첫 번째 줄에 그가 쓴 것을 이해하는 "루비 삼항 연산자". '@ model.bool_status'가 'true'이면 Ruby는 'Yes'를 평가합니다. false 인 경우 '아니요'입니다. Rails는'<%= %>'를 사용하여 뷰에서 출력을 렌더링합니다. '<% = @ model.bool_status? '예': '아니오'%>' – Nuby

+0

두 분 덕분에 문제를 해결할 수있었습니다 :-). –

2

내가 원래의 기능을 보존하는 버전을 만든 반면, 유사한 방식으로 사용자 정의가 가능합니다. DateTime.to_s(:style).

class TrueClass 
    def to_s(style = :boolean) 
    case style 
     when :word then 'yes' 
     when :Word then 'Yes' 
     when :number then '1' 
     else 'true' 
    end 
    end 
end 

class FalseClass 
    def to_s(style = :boolean) 
    case style 
     when :word then 'no' 
     when :Word then 'No' 
     when :number then '0' 
     else 'false' 
    end 
    end 
end 

https://gist.github.com/pehrlich/4963672 나는 lib 디렉토리에 넣고 다음 application.rb에서이 라인을 포함한다 :

require "./lib/boolean.rb" 
+0

to_s를 재정의하는 것이 올바른 해결책 인 것 같습니다. – nurettin

+0

정교함으로이를 구현하는 것이 좋습니다. http://www.rubyinside.com/ruby-refinements-an-overview-of-a-new-proposed-ruby- feature-3978.html –