Используя globalize gem для управления переводами с автозаполнением, возникает ситуация, когда необходимо правильно установить количество хуков. Примечание: это не использует hstore AFAIK. Мне не удалось найти способ сделать это. Наиболее производительная установка на сегодняшний день имеет
Контроллер: * +1001 *
autocomplete :nation, :name, :full => true
Nation
translates :name
вид
<%= autocomplete_field_tag 'nation_name', '', autocomplete_nation_name_itins_path, size: 35, :id_element => 'nation_id' %>
Пока нет внутренней ссылки на таблицу базы данных nation_translations
, созданную Globalize
. Как видно из этого изображения, существует проблема:
Проблема 1: входные данные остаются привязанными к значению атрибута базовой таблицы (я еще не очистил их, как предполагает самоцвет Globalize. В противном случае я бы получил пропуски). can
фактически готов все значения can
в основной таблице ... Ввод в других локалях, например, на кириллице, скажем, Канада
, естественно, не имеет никакого эффекта, так как это значение не является частью таблицы Nation.
Что интересно, так это то, что раскрывающиеся значения заполняются Rails автоматически, извлекая значения перевода того, что вводится.
Проблема 2: Я бы лучше передал параметр 'nation_id', который, естественно, является частью таблицы nation_translations, с данными формы. хотя я могу добавить , :extra_data => [:nation_id]
к контроллеру, он не передается (например, на кириллице, где ввод дается без автозаполнения)
{"utf8"=>"✓", "nation_name"=>"Канада", "commit"=>"..."}
Rails.logger.info :extra_data
возвращает:
extra_data
Теперь вторая проблема может быть преодолена, потому что запрос типа
Nation::Translation.where('name = ?', "Канада").pluck('nation_id')
возвращает правильный результат. Но этот момент спорный, если автозаполнение не играет в мяч с вводом пользователя.
Как это можно настроить, чтобы пользовательский ввод автоматически заполнялся текущими локальными переводами?