Каков рекомендуемый способ поиска / сортировки строк I18 с помощью DataTables при использовании AJAX в качестве источника данных? - PullRequest
0 голосов
/ 31 мая 2011

Итак, моя команда и я работаем над этим приложением, где мы используем плагин DataTables jQuery (http://datatables.net/)) для представления табличных данных, предоставляемых нашим бэкэндом Rails (3.0.7).

У нас возникла проблема с взаимодействием встроенных функций поиска и сортировки AJAX таблицы данных и поддержки Rails I18n. Некоторые из столбцов представляют данные конфигурации, которые поступают из базы данных (созданной в начальном файле), но являются интернационализированными, поскольку это фиксированный набор данных. Когда пользователь пытается выполнить поиск или сортировку, мы должны выполнить эти операции над видимыми I18-ными строками. Но так как поиск и сортировка делегированы бэкэнду, контроллер будет выполнять необходимые запросы по внутренним версиям строк, а не по видимым для пользователя, что приведет к ошибочным результатам.

Первым решением, о котором мы думали, было использование контроллера для:

  • выполнять запросы к БД без каких-либо критериев и сохранять результаты;
  • I18n требуемых значений в наборе результатов;
  • затем сортируйте / фильтруйте результаты.

Но это было бы слишком требовательно для сервера. Другой вариант, который мы рассмотрели, включал необходимые таблицы I18ns в таблицы, которые имеют значения, способные поддерживать I18n, но это нарушает разделение задач приложения. Поэтому мы не знаем, какой механизм нам следует использовать для реализации этой функции. Кто-нибудь может нам помочь?

1 Ответ

0 голосов
/ 31 мая 2011

У нас была похожая проблема: нам пришлось вести таблицу БД с именами иллюстраций.Иногда произведения искусства имеют разные названия на других языках.Для того, чтобы эти (в итоге мы их назвали) синонимы были доступны для поиска, мы вставили их в таблицу синонимов.Это не может быть решением для вашего случая.

Взгляните на самоцвет хорька, который обеспечивает индексацию из кода ruby.Вы можете просто перестроить этот индекс через равные промежутки времени и включить переводы.Таким образом, ваш контроллер может легко найти их, и это не нарушит разделение интересов, поскольку это просто еще одно представление ваших данных.

...