我根据FieldSearch-API-Documentation在控制器中启用了字段搜索功能。
我在以下两列上启用了字段搜索
class FooController < ApplicationController
active_scaffold 'foo' do |config|
# allowed actions
config.actions = [:create, :update, :delete, :field_search, :list, :nested, :show]
# columns
config.columns = [:date, :created_at]
# searchable columns
config.field_search.columns = :date, :created_at
config.list.always_show_search = true
# list columns
config.list.columns = [:date, :created_at]
[...]
end
end
postgresql数据库中的列日期为date类型,而created_at列为timestamp类型。
使用上面的配置参数,我成功地在活动脚手架渲染的视图上获得了一个搜索表单。在搜索表单上,有一个带运算符(例如BETWEEN)的下拉列表和两个用于选择范围的输入控件。
现在的问题是,按日期搜索可以正常工作,而按created_at搜索则无法工作。
经过详尽的研究,我发现hint描述了活动脚手架默认使用datetime格式,该格式在./config/locales/en.yml下配置,并在我的情况下显示如下。
en:
time:
formats:
default: "%Y%m%d%H%M%S"
显然,输入格式如何很重要。用于created_at搜索的搜索输入例如是从20180101000000到20181231000000。
在Column-API-Documentation上,我发现了以下内容:
options [:format]可以设置为: 日期和时间列,它将用作I18n.localize的格式参数。
我不明白我必须在控制器的option参数中定义什么样的值?
config.columns[:created_at].options[:format] = ???
答案 0 :(得分:0)
在写问题时才找到答案:-)
如果我在./config/locales/en.yml中定义了一个新条目,例如时间戳如下
en:
time:
formats:
timestamp: "%Y%m%d%H%M"
并在我的控制器中执行以下操作
config.columns[:created_at].options[:format] = "timestamp"
然后我可以通过created_at成功地使用输入201801010000和201812310000进行搜索。