Rails 4:在模型中使用ActionView帮助程序在开发环境中工作但不在生产环境中工作

时间:2014-06-16 05:33:00

标签: ruby-on-rails ruby-on-rails-4

我在我的一个模型中使用以下代码

def jasper_amount
    ActionController::Base.helpers.number_to_currency(amount)
end

我知道它破坏了MVC。但是,在这种情况下,它是最好的解决方案。我必须通过Ruby Java Bridge将数据传递给Jasper,并且Jasper中的格式化会复杂得多。

从rails控制台调用object.jasper_amount工作正常并打印预期结果。这在开发和生产中很好用。

现在,要将数据传递给Jasper,我首先必须使用object.to_xml(methods: [:jasper_amount]).to_s创建对象属性的xml版本。这适用于开发但不适用于生产。在生产中,传递给Jasper的jasper_amount的值为“0.00€”。但是,如果我从number_to_currency中删除def jasper_amount(只返回未格式化的amount),则可以正常工作。更令人困惑的是,在制作中从rails控制台调用jasper_amount这一事实。我猜罪魁祸首必须是to_xml,但我不知道为什么它在开发中起作用而不在生产中。

1 个答案:

答案 0 :(得分:0)

问题在于Ruby Java Bridge(rjb)和BigDecimal。如果将BigDecimal与rjb一起使用,则必须包含" BigDecimal"你的Gemfile中的gem。否则你所有的BigDecimal都将为0(并且你的应用程序遍布你的全部!)