Отображение существующего контента в 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