39日目の今日はProgateのRailsその2。データベースの作り方でした。
コマンド1つで作れるのにびっくりしました!
復習
Ruby on RailsⅠ(11分)
データベースは自動生成!
SQLとかいらないんですね。便利!
idカラム・・・自動で番号がどんどん入る
created_atカラム・・・データを作った日時
updated_atカラム・・・データを変更した日時
※なんでデータの事をカラムと言うんだろう?
データの作り方
rails console
<コンソールが起動する>
post = Post.new(content: "Rails勉強中!")
post.save
→データベースにレコードが追加されている!
データの取得
find_byメソッドを使う
post = Post.find_by(id: 3)
post.content
post.created_at
Post表のid=3のレコードをいったん変数postに入れて
表.列でデータを表示するみたいです。
通し番号のページを自動生成する
番号を:id
で置き換えると、ページが自動生成される。
../config/routes.rb
Rails.application.routes.draw do
get "posts/index" => "posts#index"
# ここに投稿詳細ページへのルーティングを追加してください
get "localhost:3000/posts/:id" => "posts#show"
get "/" => "home#top"
get "about" => "home#about"
end
忘れずにビューとコントローラーも作る
../controllers/posts_controller.rb
class PostsController < ApplicationController
def index
@posts = Post.all
end
# showアクションを追加してください
def show
end
end
show.html.erb
<div class="main posts-show">
<div class="container">
<div class="posts-show-item">
<p>投稿詳細画面です</p>
</div>
</div>
</div>
paramsで「:id」の値を取得する
@def show
# 変数paramsから「:id」の値を取得し、変数@idに代入してください
@id = params[:id]
end
詳細ページを作る
showアクションで変数@postを定義し、idカラムの値がparams[:id]と等しい投稿をデータベースから取得して代入します。
@post = Post.find_by(id: params[:id])
リンクを作る
link_to(リンクテキスト, リンク先URL)
link_to(post.content, "/posts/#{post.id}")
完成!
(所要時間45分)