Преобразование хеша для строкового представления в Ruby

Вы можете использовать toFixed () , чтобы сделать это

var twoPlacedFloat = parseFloat(yourString).toFixed(2)

8
задан Jakub Troszok 24 June 2009 в 13:17
поделиться

5 ответов

Хэш включает Enumerable , поэтому вы можете использовать collect :

flash.collect { |k, v| "<div class='#{k}'>#{v}</div>" }.join
24
ответ дан 5 December 2019 в 06:54
поделиться

inject бесконечно удобен:

flash.inject("") { |acc, kv| acc << "<div class='#{kv[0]}'>#{kv[1]}</div>" }
0
ответ дан 5 December 2019 в 06:54
поделиться

Вы можете получить ключи в хэше, используя

flash.keys

, а затем оттуда вы можете построить новый массив строк и затем присоединить их. Так что-то вроде

flash.keys.collect {|k| "<div class=#{k}>#{flash[k]}</div>"}.join('')

Это помогает?

0
ответ дан 5 December 2019 в 06:54
поделиться
[:info, :error].collect { |k| "<div class=\"#{k}\">#{flash[k]}</div>" }.join

Единственная проблема с решениями, представленными до сих пор, заключается в том, что вам обычно нужно перечислять флэш-сообщения в определенном порядке - а у хэша его нет, поэтому, IMHO, лучше использовать предопределенный массив.

0
ответ дан 5 December 2019 в 06:54
поделиться

Или малышка?

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>
0
ответ дан 5 December 2019 в 06:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: