2011-02-08 7 views
0

ブール値でデータベーステーブルを評価するビューがあります。これらのフィールドには、誰がそれを考えているのか、真実か偽かが含まれています。真と偽の出力をビューでRailsに置き換えます

私はこのテキストを「はい」または「いいえ」または「Ja und Nein」のようなものに置き換えたいと考えています。関係ない。それを行うRailsの方法はありますか?

+0

[Railsの(またはルビー)の可能性の重複:はい/いいえの代わりに、真/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。私の見解では、@ model.bool_statusのようなものがありますが、それはfalseまたはtrueを出力します。これをどうすれば翻訳できますか? –

+0

@ulf、DigitalRossが示唆していることを試してみると、いずれの方法でも自分のビューに必要なものを得ることができます。 Googleの「Ruby三元演算子」は、彼が最初の行に書いたことを理解するためのものです。 '@ model.bool_status'が 'true'の場合、Rubyは 'Yes'を評価します。偽の場合は「いいえ」。 Railsは '<%= %>'を使用してビューを出力します。 '<%= @ model.bool_status? 'はい': 'いいえ'%> ' – Nuby

+0

2人のおかげで、あなたの助けを借りて問題を解決しました:-)。 –

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 –

関連する問題