2012-01-05 1 views
0

У меня есть приложение, которое отслеживает статистику бейсбола игрока. Я хочу, чтобы он показывал средний батинг без начального нуля (.333 вместо 0,333). Я стараюсь number_with_precision без везения.Снимите главный ноль с помощью number_with_precision

Вот строка из моего обзора:

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

Вот код из модели:

def batting_average 
    self.hits/self.at_bats.to_f 
end 

Основываясь на number_with_precision Rails 3.1.3 документации: 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+/,'').