Активный каркас: поиск поля в столбце с отметкой времени
Я включил функцию поиска поля в моем контроллере в соответствии с 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
Дата столбца имеет тип date, а столбец create_at имеет тип timestamp в базе данных postgresql.
С параметрами конфигурации выше, я успешно получаю форму поиска по представлению, отображаемому активным скаффолдом. В форме поиска есть раскрывающийся список с операторами (например, МЕЖДУ) и двумя элементами управления вводом для выбора диапазона.
Проблема сейчас в том, что поиск по дате работает нормально, а поиск по create_at не работает.
После исчерпывающего исследования я обнаружил подсказку, которая описывает, что активный scaffold использует по умолчанию формат даты и времени, который настроен в./config/locales/en.yml и показывает в моем случае, как это.
en:
time:
formats:
default: "%Y%m%d%H%M%S"
Очевидно, это имеет значение, как формат ввода. Входные данные для поиска с помощью create_at, например: от 20180101000000 до 20181231000000.
В Column-API-Documentation я обнаружил следующее:
options [: format] может быть установлен для: столбцов даты и времени и будет использоваться в качестве аргумента формата I18n.localize для их форматирования.
Я не понимаю, какое значение я должен определить в параметре параметра в контроллере?
config.columns[:created_at].options[:format] = ???
1 ответ
Просто нашел ответ при написании вопроса:-)
Если я определю в./config/locales/en.yml новую запись, например, отметку времени, как показано ниже
en:
time:
formats:
timestamp: "%Y%m%d%H%M"
и сделать в моем контроллере следующее
config.columns[:created_at].options[:format] = "timestamp"
тогда я успешно могу искать по create_at с вводом 201801010000 и 201812310000.