https://railsguides.jp/active_storage_overview.html
https://railsguides.jp/action_text_overview.html
rails new messages
作成したアプリのディレクトリに移動しましょう。
cd messages
rails action_text:install
こちらのコマンドを実行すると必要なマイグレーションがdb/migrateフォルダ内に作成されます。rails db:create
rails db:migrate
rails generate model Message title content:rich_text
作成されたマイグレーションファイルを実行してください。rails db:migrate
モデルを以下のように編集しcontentをリッチテキストの指定をしましょう。class Message < ApplicationRecord
has_rich_text :content
end
rails g controller messages index
コントローラで受け取れるようにします。class MessagesController < ApplicationController
def index
@message = Message.new
@messages = Message.with_rich_text_content_and_embeds
end
def create
message = Message.create(message_params)
message.save
redirect_to root_url
end
private
def message_params
params.require(:message).permit(:title, :content)
end
end
config/routes.rbを編集し、Messages#IndexをTOPページに指定し、登録できるようにcreateアクションも登録します。
Rails.application.routes.draw do
root 'messages#index'
resources :messages, only: [:create]
end
<h1>メッセージ作成</h1>
<%= form_with model: @message do |form| %>
<div class="field">
<%= form.label :title %>
<%= form.text_field :title %>
</div>
<div class="field">
<%= form.label :content %>
<%= form.rich_text_area :content %>
</div>
<%= form.submit %>
<% end %>
こちらのフォームの下に表示用のViewも追加します。サニタイズ(無害化)済みのテキストになります。
<% @messages.each do |message| %>
<%= message.title %>
<div class="trix-content">
<%= message.content %>
</div>
<% end %>
sudo apt update
sudo apt install -y libvips
RedHat系sudo yum install -y epel-release
sudo yum install -y vips
config.active_storage.variant_processor = :mini_magick
rails s