【问题标题】:Ransack search for price with Money-rails用 Money-rails 搜索价格
【发布时间】:2015-10-14 12:21:46
【问题描述】:

我正在使用 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>

提前非常感谢!

【问题讨论】:

    标签: ruby-on-rails rubygems ransack money-rails


    【解决方案1】:

    Custom predicate可以解决问题。

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

    更新 #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 %>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-18
      • 1970-01-01
      • 1970-01-01
      • 2019-02-20
      • 1970-01-01
      • 2019-03-18
      • 1970-01-01
      相关资源
      最近更新 更多