Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 带有ransacker自定义筛选器的字符串的未定义方法开始\u天的\u_Ruby On Rails_Ruby_Activeadmin_Ransack - Fatal编程技术网

Ruby on rails 带有ransacker自定义筛选器的字符串的未定义方法开始\u天的\u

Ruby on rails 带有ransacker自定义筛选器的字符串的未定义方法开始\u天的\u,ruby-on-rails,ruby,activeadmin,ransack,Ruby On Rails,Ruby,Activeadmin,Ransack,我得到下面提到的错误。你知道我怎么修吗 undefined method `beginning_of_day' for "2018-01-01":String /lib/ransack_ext.rb config.add_predicate old, arel_predicate: current end config.add_predicate 'gteq_datetime', arel_predicate: 'gteq', formatter: ->(v) { v.beginning_

我得到下面提到的错误。你知道我怎么修吗

undefined method `beginning_of_day' for "2018-01-01":String
/lib/ransack_ext.rb
config.add_predicate old, arel_predicate: current
end
config.add_predicate 'gteq_datetime',
arel_predicate: 'gteq',
formatter: ->(v) { v.beginning_of_day }
代码:

Projects.rb(ActiveAdmin)

Project.rb(模型)

根据,
一天的开始()

将日期转换为时间(或DateTime,如果需要),时间部分设置为一天的开始(0:00)


字符串
不是
日期
。因此,将您的
字符串
转换为
日期
,您就可以开始了。

首先将字符串转换为日期,然后应用如下的开始日期方法:-

Date.parse("2018-01-01").beginning_of_day
这对你有帮助

ruby
ransacker:project\u event\u date,类型::date do
Arel.sql(“project\u events.event\u date”)
结束

如图所示,应使用Arel创建ransacker块结果

active\u admin具有类似谓词的自定义格式化程序
formatter:proc{v|v.start_of_day}

所以您需要将传递的值转换为日期


最好的方法是为ransacker提供
类型
格式化程序

在数据源中从datetime到date转换字段解决了我的问题

是的,在
字符串
上停止调用
开始一天
。这行不通。你的
事件\u日期列类型是什么?换成date@seethrough它的日期类型是将日期(project\u events.event\u date)
而不是
“project\u events.event\u date”
@看清楚它不起作用我该怎么做?也许你会觉得有用。特别是第一项。@jvillian smart comment,haha@jvillianto_date可以将其转换为日期。但是我应该在哪里调用这个to_date函数呢<代码>搜掠者:项目事件日期做“项目事件.事件日期”结束他应该在哪里应用这个?
 has_many :project_events, dependent: :destroy

 ransacker :project_event_date do
  "project_events.event_date"
 end
Date.parse("2018-01-01").beginning_of_day