pictweet作成 part1

モデル→テーブル→ルーティング→コントローラー→ビューの順に作成する

1、Tweetモデルを作成

  rails g model 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 db:migrateマイグレーションを実行

③コンソール上でデータベースに値を入れるため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にアクセスすることができる