pictweet作成 part1
モデル→テーブル→ルーティング→コントローラー→ビューの順に作成する
1、Tweetモデルを作成
2、テーブルを作成
テーブルとはデータベース内に作成されるデータを収納する場所のこと
rails g modelコマンドでモデルを作成した際にマイグレーションファイルが生成された
このファイルはテーブルの設計図でどのようなテーブルにするかをマイグレーションファイル内に記載しその情報を反映させることでテーブル作成及び変更ができる
①マイグレーションファイルの編集
class CreateTweets < ActiveRecord::Migration[6.0] def change create_table :tweets do |t| t.string :name t.string :text t.text :image t.timestamps end end end
*create_table :tweets do |t|と書かれていることから実際にtweetsテーブルを作成するという意味になる
*t.カラムの型 :カラム名でカラムを追加することができる
string→短文の際に使用する ex:ユーザー名、メールアドレスなど
text→長文の際に使用 ex:投稿文など
③コンソール上でデータベースに値を入れるためrails cでコンソール起動
[1] pry(main)> Tweet.create(name: "takashi", text: "Nice to meet you!") [2] pry(main)> Tweet.create(name: "ishi", text: "Hello world!") [3] pry(main)> Tweet.create(name: "yabe", text: "railsへようこそ!") [4] pry(main)> exit
④Sequel Proでtweetsデーブルとコンソールで追加した値があるかを確認する
3、ルーティングの設定
config/routes.rb
Rails.application.routes.draw do # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html resources :tweets, only: :index end
*resourceメソッドは7つのアクションへのルーティングを自動で生成する
:tweetsで/tweetsのパスに対応するルーティングが生成される
onlyを加えると指定したアクション(今回の場合はindex:一覧表示)のみを設定できる
4、コントローラーを作成及び編集
①rails d controller tweetsコマンドでコントローラーを作成
②以下のようにtweets_controller.rbを編集する
class TweetsController < ApplicationController def index @tweets = Tweet.all end end
* allメソッドでtweetsテーブル全てのレコードをインスタンス変数に代入しビューに受け渡しができるようにする
5、ビューを作成
app/views/tweets/index.html.erb
<div class="contents row"> <% @tweets.each do |tweet| %> <div class="content_post" style="background-image: url(<%= tweet.image %>);"> <p><%= tweet.text %></p> <span class="name"> <%= tweet.name %> </span> </div> <% end %> </div>
*@tweetsはコントローラーに記載してあるインスタンス変数のこと
実際にはこの後レイアウトテンプレートを編集し画像ファイルを配置をする
その後rails sコマンドでhttp://localhost:3000/tweetsにアクセスすることができる