Глобализация и действие текста

У меня есть приложение, которое использует globalize gem, и я планирую начать использовать ActionText. Итак, у меня есть модель под названием Бизнес

class Business < ApplicationRecord
  translates :name, :description
  globalize_accessors

  has_rich_text :description
end 

и я создал запись в базе данных. Но при попытке редактировать я вижу следующую ошибку

undefined method `body' for "<div><strong>jfgjwhgewr</strong></div>":String

для моей формы

  .form-inputs
    - I18n.available_locales.each do |locale|
      = f.input :"name_#{locale.to_s}", label: "Name (#{locale.to_s})"
    - I18n.available_locales.each do |locale|
      = f.label "Description (#{locale.to_s})"
      = f.rich_text_area :"description_#{locale.to_s}"

Что с ним не так и как я могу решить эту проблему?

PS: я нашел https://github.com/rails/actiontext/issues/32, но это решение выглядит немного странно:(

0 ответов

Я решил таким образом

 class Post < ApplicationRecord
   translates :title, :body, touch: true

   delegate :body, to: :translation
   delegate :body=, to: :translation

   after_save do
      body.save if body.changed?
   end

   class Translation
      has_rich_text :body
   end

Предположим, вы используете globalize gem и выполнили миграцию в соответствии с globalize docs ->

class CreateTranslation < ActiveRecord::Migration[6.0]
  def up
    Business.create_translation_table!({name: :string,  description: text}, { migrate_data: true })
  end

  def down
    Business.drop_translation_table! migrate_data: true
  end
end

удалить из модели:

globalize_accessors
has_rich_text :description

и попробуйте использовать в представлении следующее:

<%= rich_text_area_tag "business[name]",  f.object.name %>
<%= rich_text_area_tag "business[description]",  f.object.description %>
Другие вопросы по тегам