Глобализация и действие текста
У меня есть приложение, которое использует 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 %>