J'ai personnellement eu l'occasion de présenter ʻAction Text, alors prenez note. Lors du développement de quelque chose comme un service de blog, je me demandais comment introduire ʻActionText
dans le modèle ʻArticle`, donc j'espère que cela aidera quelqu'un.
L'une des fonctionnalités disponibles depuis rails6. Introduisez du contenu texte riche et des fonctionnalités d'édition dans Rails
Je souhaite créer un service de publication d'articles. Créez un modèle d'article avec trois données, un titre, une description et un corps, et introduisez ActionText pour modifier le corps.
ʻArticle` Génère un modèle. «title» est le titre de l'article et «description» est la description de l'article. Notez que nous ne créons pas de colonnes pour stocker les données du corps.
rails g model Article title:string description:text
ʻActionText` peut être installé avec la commande suivante.
rails action_text:install
Lorsque vous installez ActionText, deux fichiers de migration sont générés.
L'un est un fichier lié à ʻActive Storage, et l'autre est un fichier qui crée une table de ʻActionText
.
Ce dernier tableau est la clé de la structure de données que je veux expliquer dans cet article.
Le contenu de texte enrichi est stocké dans son propre modèle RichText, qui est associé à tout modèle d'enregistrement actif existant dans l'application. Toutes les images intégrées (et autres pièces jointes) sont automatiquement stockées dans Active Storage et associées au modèle RichText inclus.
https://railsguides.jp/action_text_overview.html#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB
class CreateActionTextTables < ActiveRecord::Migration[5.2]
def change
create_table :action_text_rich_texts do |t|
t.string :name, null: false
t.text :body, limit: 16777215
t.references :record, null: false, polymorphic: true, index: false
t.datetime :created_at, null: false
t.datetime :updated_at, null: false
t.index [ :record_type, :record_id, :name ], name: "index_action_text_rich_texts_uniqueness", unique: true
end
end
end
En associant les données ci-dessus au modèle ʻArticle`, il est possible d'éditer le contenu de l'article avec du texte enrichi. Lier les données est facile, ajoutez-les au modèle comme suit.
article.rb
class Article < ApplicationRecord
has_rich_text :content
end
Comme expliqué ci-dessus, la table ʻArticle contient
titleet
description, et le contenu de l'article (
content) est conservé dans la table ʻActionText :: RichText
. Si vous regardez les résultats de la console ci-dessous, ce sera plus facile à imaginer.
#Obtenir les données du modèle d'article
irb(main):001:0> Article.all.first
=> #<Article id: 1, created_at: "2020-07-11 13:19:00", updated_at: "2020-07-11 13:19:00", title: "tester", description: "testerです">
#ActionText associé au modèle Article::Obtenir des données RichText
irb(main):002:0> Article.all.first.content
=> #<ActionText::RichText id: 1, name: "content", body: #<ActionText::Content "<div class=\"trix-conte...">, record_type: "Article", record_id: 1, created_at: "2020-07-11 13:19:00", updated_at: "2020-07-11 13:19:00">
#Comment obtenir le contenu d'un article?
irb(main):003:0> Article.all.first.content.body
=> #<ActionText::Content "<div class=\"trix-conte...">
Recommended Posts