Отображение существующего контента в Rails 5.2 с ActionText

Я обновил свое приложение до rails 5.2 и склонен использовать ActionText, так как старый trix-editor/gem больше не работает. Теперь новые сообщения отображают свои "описания", но как я могу отобразить ОПИСАНИЯ моих старых сообщений с новым установленным ActionText?

post.rb has_rich_text :description

posts_controller.rb...params.require(:post).permit(:description)

_form.html.erb<%= f.rich_text_area :description %>

show.html.erb<%= @post.description %>

Описания извлекаются только из новых записей в ActionText, но не отображаются из существующих столбцов "описания" для старых сообщений.

1 ответ

У меня была похожая проблема, и я не мог найти чистого решения в репо или где-либо еще. В качестве обходного пути в вашем случае я бы попробовал:

show.html.erb:.
<%= @post.try(:description).body || @post[:description] %>

Это не решит проблему, но поможет вам заполнить старые посты.

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

"Предполагая, что в вашей модели есть" контент ", и это то, что вы хотите перенести, сначала добавьте в свою модель:"

has_rich_text :content

"затем создайте миграцию"

rails g migration MigratePostContentToActionText
class MigratePostContentToActionText < ActiveRecord::Migration[6.0]
  include ActionView::Helpers::TextHelper
  def change
    rename_column :posts, :content, :content_old
    Post.all.each do |post|
      post.update_attribute(:content, simple_format(post.content_old))
    end
    remove_column :posts, :content_old
  end
end

Вы можете найти исходное решение, которое я использовал здесь https://github.com/rails/rails/issues/35002#issuecomment-562311492

Другие вопросы по тегам