首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby on rails。搜索money-rails货币化属性

Ruby on rails。搜索money-rails货币化属性
EN

Stack Overflow用户
提问于 2016-02-23 13:08:20
回答 1查看 273关注 0票数 0

我在使用ransack搜索money-rails/货币化属性时遇到了问题。我只能用分钱来搜索。我有一个带有money属性salary的模型(gig)。我可以创建这个模型,没有问题:

代码语言:javascript
复制
 <%= form.input :salary %>

它按照预期将值保存在salary_cents列中,就像在gig模型中一样:

代码语言:javascript
复制
monetize :salary_cents

然后,我可以在视图中显示薪资如下:

代码语言:javascript
复制
<%= @gig.salary %>

我遇到的问题是用洗劫搜索这个领域。salary属性为null,salary_cents属性按应有的方式填充,但这意味着我只能以美分进行搜索。

在我使用的搜索中:

代码语言:javascript
复制
<%= f.search_field :salary_cents_gteq %>
<%= f.search_field :salary_cents_lteq %>

但是要搜索$30,我必须输入3000。在发送搜索请求之前,是否有任何方法处理输入的数据(乘以100 )?我错过了什么更简单的方法吗?

我已经搜索过这个,也找不到任何关于用洗劫搜索金钱领域的信息。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-12 23:05:41

Ransack的自定义谓词拯救了这一天!

代码语言:javascript
复制
# 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应用程序,您就可以随意使用美元/欧元进行搜索:

代码语言:javascript
复制
<%= f.search_field :salary_cents_gteq_euros %>
<%= f.search_field :salary_cents_lteq_euros %>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35578452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档