Вы можете использовать toFixed () , чтобы сделать это
var twoPlacedFloat = parseFloat(yourString).toFixed(2)
Хэш
включает Enumerable
, поэтому вы можете использовать collect
:
flash.collect { |k, v| "<div class='#{k}'>#{v}</div>" }.join
inject
бесконечно удобен:
flash.inject("") { |acc, kv| acc << "<div class='#{kv[0]}'>#{kv[1]}</div>" }
Вы можете получить ключи в хэше, используя
flash.keys
, а затем оттуда вы можете построить новый массив строк и затем присоединить их. Так что-то вроде
flash.keys.collect {|k| "<div class=#{k}>#{flash[k]}</div>"}.join('')
Это помогает?
[:info, :error].collect { |k| "<div class=\"#{k}\">#{flash[k]}</div>" }.join
Единственная проблема с решениями, представленными до сих пор, заключается в том, что вам обычно нужно перечислять флэш-сообщения в определенном порядке - а у хэша его нет, поэтому, IMHO, лучше использовать предопределенный массив.
Или малышка?
class Hash
def do_sexy
collect { |k, v| "<div class='#{k}'>#{v}</div>" }.flatten
end
end
flash = {}
flash[:error] = "This is an error."
flash[:info] = "This is an information."
puts flash.do_sexy
#outputs below
<div class='error'>This is an error.</div>
<div class='info'>This is an information.</div>