Активный каркас: поиск поля в столбце с отметкой времени

Я включил функцию поиска поля в моем контроллере в соответствии с 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.

Другие вопросы по тегам