何かやってみるブログ

興味をもったことに関して書いています。技術系の記事が多いです。

[Rails] Action Textを試してみる(1)

Rails6がリリースされて結構時間たったのにも関わらずActionTextに触ったことがなかったので、ActionTextを試してみました.

環境構築

rubyは2.6.5、railsは6.0.3.1を使いました.

➜  ~ ruby -v
ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-darwin19]
➜  ~ rails -v
Rails 6.0.3.1
$ rails new action_text_sample
$ cd action_text_sample
$ rails s 

http//localhost:3000 にアクセスしてYay! You’re on Rails!となればOKです.

f:id:s-takaya1027:20200530202531p:plain

モデルやコントローラーを作る

モデルを作る

$  rails g model Post body:text
$  rails db:migrate

コントローラーを作る

$ rails g controller posts index new create
class PostsController < ApplicationController
  def index
    @posts = Post.all
  end

  def new; end

  def create
    @post = Post.new(post_params)
    if @post.save
      redirect_to root_url
    else
      render "posts/index"
    end
  end

  private

  def post_params
    params.require(:post).permit(:body)
  end
end

routingの設定をする

Rails.application.routes.draw do
  root to: "posts#index"
  resources :posts, only: [:new, :create]
  # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
end

Viewを書く

<h1>Posts#index</h1>
<%= render @posts %>

<%= form_with(model: Post.new, local:true) do |f| %> <%= f.rich_text_area :body %> <%= f.submit %> <% end %>

Action Textを使うので、text_areaではなく、rich_text_areaになっています.

<div>
  <%= post.body %>
</div>

Action Textに必要なテーブルやYarnパッケージを追加する

$ rails action_text:install
$ rails db:migrate

Action Textの設定をmodelに追加する

class Post < ApplicationRecord
  has_rich_text :body  # 追加
end

動作確認

サーバーを立ち上げるとよくみるUIができています.

$ rails s

f:id:s-takaya1027:20200603034804p:plain

適当に試してみるとこんな感じのテキストが作成ができます. f:id:s-takaya1027:20200603034904p:plain