用 Money-rails 搜索价格
Ransack search for price with Money-rails
我正在使用 Ransack 向我的 rails 应用程序添加搜索功能,我还使用 Money-rails gem 来处理价格和货币。
我想在 Ransack 搜索字段中输入以美元为单位的价格,然后它将其转换为美分以便在相关 table.
中找到它
所以基本上问题是如何在使用 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>
非常感谢!
Custom predicate可以解决问题
您可以使用 formatter
proc 将美元转换为美分。当您将显示 ransack 对象的价格值时,可能会出现问题。
更新 #1
或者更好的是,您可以用 ransacker class method.
来解决
更新#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 %>
我正在使用 Ransack 向我的 rails 应用程序添加搜索功能,我还使用 Money-rails gem 来处理价格和货币。
我想在 Ransack 搜索字段中输入以美元为单位的价格,然后它将其转换为美分以便在相关 table.
中找到它所以基本上问题是如何在使用 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>
非常感谢!
Custom predicate可以解决问题
您可以使用 formatter
proc 将美元转换为美分。当您将显示 ransack 对象的价格值时,可能会出现问题。
更新 #1
或者更好的是,您可以用 ransacker class method.
来解决更新#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 %>