Rails5:如何从API数据格式化货币值

时间:2018-10-06 14:35:40

标签: ruby-on-rails ruby ruby-on-rails-5

我有一个Ruby on Rails应用程序,该应用程序已成功从API请求数据,但希望其格式为4,992.02,而不是4,992.0293

<div class="card-body">
  <h1 class="card-title pricing-card-title"><i class="fa fa-gbp" aria-hidden="true"></i><%= @bitcoin ["bpi"]["GBP"]["rate"] %></h1>
</div>

所以[Rate]是数字的来源。使用了标准的number_to_currency方法

<%= @bitcoin ["bpi"]["GBP"] number_to_currency(["rate"]) %> 

但出现错误

已更新,但有错误   <%= @bitcoin [“ bpi”] [“ GBP”] number_to_currency([“ rate”])%>

/Users/neilpatel/Desktop/2018/rails/bit/app/views/home/index.html.erb:13: syntax error, unexpected tIDENTIFIER, expecting ')' ...bpi"]["GBP"] number_to_currency(["rate"]) );@output_buffer.s... ... ^

3 个答案:

答案 0 :(得分:0)

不能使用round,字符串包含,逗号。

// helpers/app_helper.rb
module ApplicationHelper
   def coin_to_currency(number)
           n = number.split(".")
           num = n[0]
           dec = n[1].slice(0..1)
           number_to_currency([num, dec].join("."))
   end
end


// view
<%= coin_to_currency( PLACE_COIN_NUMBER_HERE ) %> 

答案 1 :(得分:0)

因此,我建议您使用此解决方案:

这行在您的控制器中:

@split_result = '4,992.0293'.split(',')
@result = @split_result[0] + @split_result[1].to_f.round(2).to_s

此行转到您的视图:

<%=  number_with_delimiter(@result) %>

这是您输入的'4,992.0293'的结果,它被舍入到小数点后2位,因为0293如果您将其切成2个数字,则校正后的值为03。 / p>

enter image description here

答案 2 :(得分:0)

尝试

"4,9920.0293"[/[\d+,?\d+]+\.?\d{0,2}/]
 => "4,9920.02"