0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Rails入門】初学者がActionTextをインストールしてみた! ~初心者でも簡単にリッチテキストを扱える~

Posted at

📝 ActionText って何?

Rails でリッチテキストを扱うのに便利な ActionText という機能を試してみました。
ActionText を使うと、太字・画像・リンク付きの文章を簡単に入力・保存・表示できる らしく、学ぶ機会があったため、実際に動かしてみました。
例えば、ブログの記事やコメント機能で「装飾付きのテキストを書きたいなあ」ってときにすごく便利です。
実装できた時は、エクセルやワードを思い出しました。

Rails 標準機能の Trixエディタ を自動で組み込んでくれるので、特別な設定は不要なようです。
アウトプットのために、残しておきます。


🔧 ActionText をインストールする

1. ActionText のインストール

まずは、Rails アプリのルートディレクトリで以下のコマンドを実行します。

bundle exec rails action_text:install

これで、

  • db/migrate/xxxxxx_create_action_text_tables.rb というマイグレーションファイルが作成される
  • app/javascript に Trix エディタが追加される
  • app/assets/stylesheets/actiontext.scss が作成される

…といった準備が自動で進むはず。

2. SCSS にスタイルを追加(重要!)

私は、そのままだとなぜか Trix エディタが正しく動かなかったので、以下のコードを app/assets/stylesheets/application.scss に追記。

@import 'actiontext';
@import 'trix/dist/trix.css';

もしエディタがうまく表示されない場合は、これを試してみてください。(参考程度に)

3. マイグレーションを実行

次に、作成されたマイグレーションファイルを適用します。

bundle exec rails db:migrate

これで、リッチテキスト用のデータを保存する action_text_rich_texts テーブルが作成される。


🏗 実際に使ってみる

1. モデルに ActionText を追加

リッチテキストを使いたいモデルに has_rich_text を追加します。

class Article < ApplicationRecord
  has_rich_text :content
end

これで、content というリッチテキストのフィールドが使えるようになりました。

(普通はテーブルに content カラムを追加するけど、ActionText を使うと action_text_rich_texts テーブルに自動で保存されるので、カラム追加は不要!)

2. フォームにリッチテキストエディタを追加

記事を作成するときのフォームにリッチテキストエディタを追加します。

<%= form_with model: @article, local: true do |f| %>
  <div>
    <%= f.label :title %>
    <%= f.text_field :title %>
  </div>

  <div>
    <%= f.label :content %>
    <%= f.rich_text_area :content %>
  </div>

  <%= f.submit "投稿する" %>
<% end %>

rich_text_area を使うだけで、Trixエディタが使えるようになルはず。

3. 記事を表示する

作成した記事を表示するときは、普通に @article.content を出力。

<h1><%= @article.title %></h1>
<div>
  <%= @article.content %>
</div>

これだけでリッチテキストが反映されました。


🗑 ActionText を削除するには?

「やっぱり普通のテキストに戻したい…」ってときのために、ActionText の削除方法もメモしておきます。

1. モデルから削除

まず、has_rich_text の行を削除します。

class Article < ApplicationRecord
  # has_rich_text :content (この行を削除!)
end

2. データベースの変更を元に戻す

以下のコマンドを実行して、action_text_rich_texts テーブルを削除します。

bundle exec rails db:rollback STEP=1

または、マイグレーションファイルを削除した後に、

bundle exec rails db:migrate

を実行してもよい。

3. 関連ファイルの削除

ActionText のインストール時に追加されたファイルを削除します。

rm -rf app/javascript/trix
rm -rf app/assets/stylesheets/actiontext.scss

また、config/importmap.rbpin "trix" などの記述がある場合は削除。


📌 まとめ

ActionText を使うと リッチテキスト(画像・装飾つきテキスト)を簡単に扱える。
has_rich_text :content を追加するだけで データベースのカラム追加は不要
Trixエディタ が自動で使えるので、設定いらず。
SCSS に @import を追加すると、エディタが正常に動作する可能性あり。
不要になったら簡単に削除できる


🔗 参考リンク

以上、超初学者が ActionText をインストールしてみた記録でした。
引き続き、学習を続けます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?