はじめに
前回: Docker + Rails で開発環境を作った。
せっかく作ったのに開発しないのはもったいないよね。
でもできることって限られてる。
ということで、TODOアプリを作ってみる
目標
- trello
- 今回はとりあえず、seed データを投入して、その一覧を表示させるとこまで。
- タイトル詐欺してますね、「その1」では Vue は使いません(そこまでいけない)
1.準備
Docker を起動し、コンテナに接続していきます。
$ cd myapp
$ docker-compose up
$ docker ps
myapp_web
と mysql
の CONTAINER ID
を控える
そぞれのコンテナに接続をする。
$ docker exec -it CONTAINER_ID bash
root@CONTAINER_ID:/myapp# これでOK
docker exec -it CONTAINER_ID bash
root@CONTAINER_ID:/# mysql -u root -p
Enter password: # database.yml に記載したパスワード
mysql> これでOK
2. Rails の操作
2.1 モデルを作る
Task モデルを作る。
# rails g model Task title:string context:string level:integer
# rails db:migrate
2.2 コントローラーも作る
こっちは Tasks
複数形であることに注目、Rails Tutorial で確かそう習った
# rails g controller Tasks
とりあえず一覧を見たい
class TasksController < ApplicationController
def index
@tasks = Task.all
end
def show
end
def new
end
def create
end
def edit
end
def update
end
def destroy
end
end
ついでに他のも CRUD の7つも枠だけ用意しておく。
2.3 index で表示させる seed データを作る
Task.create(
[
{
title: 'task 001',
context: 'hogehoge',
level: '2',
},
{
title: 'task 002',
context: 'fugafuga',
level: '3',
},
{
title: 'task 003',
context: 'piyopiyo',
level: '1',
},
],
)
# rails db:seed
2.4 seed データを作成したら db を覗く
MySQL 側でデータベース名を確認し
sequel pro で実際にデータが入っているか確認する。
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| myapp_development | # こいつを使うよ
| myapp_test |
| mysql |
| performance_schema |
| sys |
+--------------------+
終わったらコンテナごと exit
しちゃう。
3. View とその準備
さっき rails db:seed
で作成したデータを表示させたい。
表示させるページは /tasks
と /
(ルートページ)
3.1 ルーティング
Rails.application.routes.draw do
root to: 'tasks#index'
resources :tasks
end
3.2 View ファイルの作成
model, controller は rails g
があるけど
view にはないらしい。
ので、手動で作っていく、
$ touch app/views/tasks/index.html.erb
$ touch app/views/tasks/show.html.erb
$ touch app/views/tasks/new.html.erb
$ touch app/views/tasks/edit.html.erb
<h1>Your Tasks</h1>
<ul>
<% @tasks.each do |task| %>
<li><%= task.title %><%= task.context %></li>
<% end %>
</ul>
Task.all
の数だけ Task の持っている title と context を表示
...なんかだんだんモデルの作りがイケてない気がしてきた。
そしてローカルホストに接続して確認。
参考
Railsでタスク管理ができるWebアプリを作成してみた(Rails入門)
【Ruby on Rails】ToDoアプリを簡単に作ってみる
ありがとうございます。