带有Rails的Money-Rails Gem 4 - 实例货币

时间:2015-06-02 04:56:13

标签: ruby-on-rails money-rails

我试图在我的Rails 4应用程序中使用monetise(使用money-rails gem)。

您如何仅允许用户提交数字?当我输入100时,我得到1美元而不是100美元。

在我的模型中,我有:

monetize :participation_cost_pennies, with_model_currency: :participation_cost_currency

我正在使用实例货币,因此用户选择相关货币。我的表中有参与成本,参与成本便士和参与成本货币的列。

在我的表格中,我有:

   <%= par.select :participation_cost_currency,
                             options_for_select(major_currencies(Money::Currency.table)),
                             label: false,
                             prompt: "Select your costs currency" %>

            <%= par.input :participation_cost, label: false, placeholder: 'Whole numbers only', :input_html => {:style => 'width: 250px; margin-top: 20px', class: 'response-project'} %>

在我看来,我有:

   <%= money_without_cents_and_with_symbol @project.scope.participant.participation_cost  %>

通过将“参与成本便士”替换为表格中的参与成本,我得到的数字显示为整数而没有分数,当我输入100时,我现在得到10,000美元(所以相反的问题是它增加了2 00到我输入的结尾。

3 个答案:

答案 0 :(得分:2)

似乎,您在数据库中使用[HttpPost] public ActionResult GetSeatsInShow(int id) { ... return View(realSeatList); } 列并要求用户输入完全相同的输入。这两个不同的二传手/吸气剂。请尝试以下方法:

price

在这种情况下,用户以美元设置价格,它将自动转换为美分,以将其存储在# add migration rename_column :products, :price, :price_cents # set monetize for this field inside the model class Product monetize :price_cents end # inside form use .price instead of .price_cents method f.text_field :price 字段中。

答案 1 :(得分:1)

money-rails宝石中价格被保存in cents,所以100正常100输出1美元,因为它确实是100美分。 100美元将是10000.这是故意的,avoid floating point rounding errors

如果您想在应用中处理美元,可以编写帮助函数将输入转换为美分。

答案 2 :(得分:1)

假设您的表中有 price_cents 列。 您可以尝试使用此代码在monitize之前将美元金额转换为美分:

DISTINCT