在javascript中使用money-rails助手

时间:2016-06-17 16:12:31

标签: ruby-on-rails money-rails

是否可以在Ruby on Rails中的javascript资源中使用帮助程序?我正在尝试使用可用帮助器Object { fractional: "21050.0", currency: Object, bank: Object }转换Money对象humanized_money。在普通视图中它正常工作<%= humanized_money_with_symbol my_money_object %>但在 js.coffee 文件中它在javascript控制台中显示此错误。

  

ReferenceError:未定义humanized_money

我的.js.coffee文件

$('.select2-hidden-accessible').change ->
  item_id = $(this).find(":selected").val()
  unit_price_input = $(this).parent().find('.unit_price')
  unit_price = 0;
  $.ajax "/items/#{item_id}.json",
    type: 'GET'
    dataType: 'json'
    error: (jqXHR, textStatus, errorThrown) ->
        console.log(textStatus)
    success: (data, textStatus, jqXHR) ->
        console.log(data['unit_price'])
        unit_price = data['unit_price']
  unit_price_input.val(humanized_money unit_price)

解决方案

我已经将show.json.jbuilder更改为使用humanized_money进行响应,而不是在视图中执行此操作。

json.extract! @item, :id, :unit, :created_at, :updated_at
json.unit_price humanized_money @item.unit_price

1 个答案:

答案 0 :(得分:0)

解决此问题的最简单方法是为钱创建一个initializer文件,并覆盖to_json方法

class Money
  def as_json(options)
    self.to_f
  end
end

默认情况下,money列显示的数据多于视图中实际需要的数据。