есть ли у кого-нибудь опыт работы с Active Admin и Globalize gem? Я работаю над приложением, которое должно быть интернационализировано и нуждается в интерфейсе администратора.
Я хочу редактировать / создавать атрибуты модели для каждой локали, используя одну форму в ActiveAdmin, или иметь возможность легко обновлять атрибуты модели для локали используя интерфейс ActiveAdmin.
Я работаю с моделью блога, с полями «Заголовок», «Автор», «Контент». После внедрения гема globalize эти поля были удалены из таблицы Blog во вновь созданную таблицу blog_translations. Это означает, что столбцы больше не видны в исходной таблице «Блог» и появились в отдельной таблице переводов.
Это схема после реализации Globalize.
create_table "blog_translations", force: :cascade do |t|
t.bigint "blog_id", null: false
t.string "locale", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "title"
t.string "author"
t.text "content"
t.index ["blog_id"], name: "index_blog_translations_on_blog_id"
t.index ["locale"], name: "index_blog_translations_on_locale"
end
create_table "blogs", force: :cascade do |t|
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
Они связан с таблицей перевода с помощью директивы translates.
class Blog < ApplicationRecord
has_one_attached :photo
translates :title, :author, :content, touch: true
globalize_accessors :locales => [:en, :lo]
end
Я впервые использую Globalize и Active Admin. Я изо всех сил пытаюсь показать «Заголовок», «Содержание», «Автор», потому что они прикреплены к таблице blog_translations, и когда Active Admin отображает атрибуты модели для обновления, их там нет, потому что они не существуют в исходной модели.
После выполнения настройки Globalize, насколько я вижу, не создается каждая новая модель для blog_translations в папке моделей rails.
При создании ресурса Active Admin поля ввода отсутствуют появляются потому, что они были перемещены в таблицу Blog_translations
ActiveAdmin.register Blog do
permit_params :title, :author, :content
end
Я нашел гем под названием globalize-accesors, который дает вам простой доступ (чтение и запись) глобализировать переведенные поля, не вмешиваясь в локаль. Процитируем документацию: «Предоставляет вам доступ к методам: title_pl, title_en, title_pl =, title_en =. Они беспрепятственно работают с Globalize (даже не затрагивая заголовок «core», title = методы, используемые самой Globalize).
Мне известен гем Active Admin Globalize, который больше не поддерживается и с тех пор устарел, так что это больше не вариант.
Кто-нибудь знает, как я могу получить доступ к атрибутам блога в ActiveAdmin, даже если в самой модели поля не существуют? Есть ли способ создания интерфейса, который позволяет мне легко обновлять поля для каждой локали в модели в Active Admin с помощью globalize?
В моей голове, единственный способ представить эту работу - создать какую-то настраиваемую форму с дублирующимися полями для каждой локали. Когда отправляется запрос POST для создания нового блога, я думаю о том, как захватить эти поля с помощью параметров и настроить их вручную в контроллере блога, используя средства доступа Globalize для каждого поля?
Было бы замечательно, если бы у кого-нибудь был совет, как сделать эту работу. Или если у них есть опыт использования Active Admin с Globalize.
Спасибо за вашу помощь.