Ruby 在 rails 上。 Ransack 搜索 money-rails Monetize 属性
Ruby on rails. Ransack search on money-rails Monetize attribute
我在使用搜索搜索 money-rails/Monetized 属性时遇到问题。我只能以美分搜索。我有一个带有货币属性 salary
的模型 (gig)。我可以毫无问题地创建这个模型:
<%= form.input :salary %>
它将值保存在 salary_cents
列中,正如我在我的零工模型中所期望的那样:
monetize :salary_cents
然后我可以在视图中显示薪水:
<%= @gig.salary %>
我遇到的问题是用 ransack 搜索这个字段。 salary
属性为空,salary_cents
属性按应有的方式填充,但这意味着我只能以美分进行搜索。
对于我正在使用的搜索:
<%= f.search_field :salary_cents_gteq %>
<%= f.search_field :salary_cents_lteq %>
但要搜索 </code>,我必须输入 <code>3000
。在发送搜索请求之前,是否有任何方法可以操纵输入的数据乘以 100?有没有我遗漏的更简单的方法?
我已经搜索过了,但找不到任何关于用 ransack 搜索货币字段的信息。
提前致谢。
Ransack 的 custom predicates 挽救了局面!
# config/initializers/ransack.rb
Ransack.configure do |config|
config.add_predicate 'gteq_euros',
arel_predicate: 'gteq',
formatter: proc { |v| v * 100 },
validator: proc { |v| v.present? }
config.add_predicate 'lteq_euros',
arel_predicate: 'lteq',
formatter: proc { |v| v * 100 },
validator: proc { |v| v.present? }
end
一旦您重新启动您的 rails 应用程序,您就可以随心所欲地搜索美元/欧元:
<%= f.search_field :salary_cents_gteq_euros %>
<%= f.search_field :salary_cents_lteq_euros %>
我在使用搜索搜索 money-rails/Monetized 属性时遇到问题。我只能以美分搜索。我有一个带有货币属性 salary
的模型 (gig)。我可以毫无问题地创建这个模型:
<%= form.input :salary %>
它将值保存在 salary_cents
列中,正如我在我的零工模型中所期望的那样:
monetize :salary_cents
然后我可以在视图中显示薪水:
<%= @gig.salary %>
我遇到的问题是用 ransack 搜索这个字段。 salary
属性为空,salary_cents
属性按应有的方式填充,但这意味着我只能以美分进行搜索。
对于我正在使用的搜索:
<%= f.search_field :salary_cents_gteq %>
<%= f.search_field :salary_cents_lteq %>
但要搜索 </code>,我必须输入 <code>3000
。在发送搜索请求之前,是否有任何方法可以操纵输入的数据乘以 100?有没有我遗漏的更简单的方法?
我已经搜索过了,但找不到任何关于用 ransack 搜索货币字段的信息。
提前致谢。
Ransack 的 custom predicates 挽救了局面!
# config/initializers/ransack.rb
Ransack.configure do |config|
config.add_predicate 'gteq_euros',
arel_predicate: 'gteq',
formatter: proc { |v| v * 100 },
validator: proc { |v| v.present? }
config.add_predicate 'lteq_euros',
arel_predicate: 'lteq',
formatter: proc { |v| v * 100 },
validator: proc { |v| v.present? }
end
一旦您重新启动您的 rails 应用程序,您就可以随心所欲地搜索美元/欧元:
<%= f.search_field :salary_cents_gteq_euros %>
<%= f.search_field :salary_cents_lteq_euros %>