0

我正在使用 Ransack 向我的 rails 应用程序添加搜索功能,并且我还使用 Money-rails gem 来处理价格和货币。

我想在 Ransack 搜索字段中输入以美元为单位的价格,然后将其转换为美分以便在相关表中找到它。

所以基本上问题是如何在使用 Ransack 提交搜索之前将输入表单美元转换为美分。

搜索表格:

<div class="form-group">
    <%= f.label :price_cents_gteq, "Price between" %>
    <%= f.text_field :price_cents_gteq %>
    <%= f.label :price_cents_lteq, "And" %>
    <%= f.text_field :price_cents_lteq %>
</div>

提前非常感谢!

4

1 回答 1

3

自定义谓词可以解决问题。

您可以使用formatterproc 将美元转换为美分。当您显示价格的洗劫对象值时,可能会出现问题。

更新#1

甚至更好的是,您可以使用ransacker 类方法解决它。

更新#2

这是带有模型和 ransaker 方法的原始解决方案:

# model
ransacker :price_money, type: :integer, formatter: proc { |dollars| dollars * 100 } do |p|
  p.table[:price_cents]
end

# form in view
<%= f.number_field :price_money_gteq %>
<%= f.number_field :price_money_lteq %>
于 2016-05-25T02:36:53.493 回答