RailsアプリにシンプルなWYSIWYGエディタを導入

Basecampが開発しているWYSIWYGエディタ、TrixをRailsに導入しました。

Railsプロジェクトは作成中のブログサービスアプリケーション。
ブログ記事の作成ページにエディタを導入します。

バージョン

Rails 5.2.1
Trix 0.10.1


インストール

まずgemを導入します。

gem 'trix'


bundle install



application.jsに追記

//= require trix


application.scss最上部に追記

@import "trix";


入力フォームを編集

ブログ記事の入力フォームのテキスト(:text)部分

  <div class="field">
    <%= form.label :text %>
    <%= form.text_area :text %>
   
  </div>  


これを以下のように変更します。

  <div class="field">
    <%= form.label :text %>
    <%= form.hidden_field :text, id: :article_text %>
    <trix-editor input="article_text"></trix-editor>
  </div>  


作成したテキストの表示方法

そして入力したテキストのshowページで表示するんですが、HTML要素がエスケープされないようにする必要があります

<%= sanitize @article.text %>

これでも良いのですが、

 <%= sanitize @article.text, tags: %w(h1 h2 h3 h4 h5 h6 ul ol li p a img table tr td em br strong div), attributes:  %w(id class href) %>

このように、許可する要素と属性を明示的に指定するとより安心です。

結果

これだけで、リッチなテキストエディタRailsアプリに導入することができました。
f:id:naito-coding0322:20181013204259p:plain



参考リンク

GitHub - maclover7/trix

Rails で raw HTML を sanitize する - FIVETEESIXONE

Trix WYSIWYG Editor And File Uploads - YouTube