2012-01-05 1 views
0

私はプレーヤーの野球統計を追跡するアプリを持っています。先頭に0を付けずに打撃平均を表示したいです(.333の代わりに0.333)。私は運がないとnumber_with_precisionを試してきました。ここでnumber_with_precisionを使って先行ゼロを落とす

は私のビューからの行である:ここでは

<%= number_with_precision(@player.batting_average, :precision => 3, 
    :significant => true, :strip_insignificant_zeros => true) %> 

は、モデルからコードです:

number_with_precision Railsの3.1.3のドキュメントに基づいて
def batting_average 
    self.hits/self.at_bats.to_f 
end 

:strip_insignificant_zerosはゼロのみに適用されます小数点の後に:重要では小数点には影響しません。私は何か簡単なものを逃しています

答えて

1

あり、これを行うための方法のトンがありますが、認識する主なものは、あなたがフロートを扱っているし、使用する文字列にそれを上に変換する必要がありますということですgsub[]のようなものです。ここで

はいくつかのアイデアです:

def to_ba 
    self.to_s[1..-1] 
end 

またはgsub

def to_ba 
    self.to_s.gsub(/^0+/, '') 
end 

またはあなたがクレイジー取得したい(そしてこれが何よりも楽しみのためにもっとある)の場合で:

def to_ba 
    self.to_s.reverse.chop.reverse 
end 

これらはすべて、次のように値の最後に追加できるヘルパーメソッドです。

number_with_precision(stuff).to_ba 

またはあなたがちょうどこのようなあなたのコールの最後にこれらの方法のいずれかを添付できます。

number_with_precision(stuff).to_s[1..-1] 

しかし、あなたは上のすべての打率を配置する予定がある場合、私はヘルパーを使用します場所。

1

いいえ、正しい動作です。正しい方法でヘルパーを書くか、gsub(/^0+/,'')を追加するだけです。