Скажите, у меня есть это:
class Account
...
property :charge, Decimal, :precision => 7, :scale => 2
...
classy stuff
...
def self.balance(prefix)
x = Account.get(prefix.to_sym).order(:fields => [:charge]).sum(:charge)
sprintf("%5.2f", x)
end
end
(Редактировать: Значение всех полей начислений равно 0,13E2 (0,1E2 + 0,3E1). Это возвращено правильно. Только в представлении это выглядит как sprintf
)
В IRB Account.balance(:AAA)
возвращает => "13.00"
если я позвоню Account.balance(:AAA)
из представления, я получу TypeError в / account
не может конвертировать ноль в число с плавающей точкой
Account.balance(:AAA)
работает везде, где я его называю , кроме в представлении. Если я уберу sprintf("%5.2f", x)
, я получу 0.13E2
на мой взгляд. (использование Account.balance(:AAA).to_f
в представлении дает мне 13.0
)
Синатра несовместима с sprintf
? или я не понимаю, как использовать sprintf
?
(Изменить: Это оскорбительный вид:)
<section>
<% @accounts.each do |account| %>
<article>
<h2><%= account.prefix %></h2>
<span><p>This account belongs to <%= account.name %> & has a balance of $<%= Account.balance(account.prefix) %>.</p></span>
</article>
<% end %>
</section>