Rails7でHelloWorld

## 前提
- Rails（前回の記事で手順を記載しています）

https://qiita.com/chiepon115/items/bc7bdab6105aa5836465

- DBに登録されたデータをControllerで取得し、Viewで表示するシンプルな内容になっています

## Controllerを作成

- `rails g controller users index`でUsersControllerを作成
  - ApplicationControllerを継承しています
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2744934/eb6c812d-3b2d-6a02-6130-caa0d5bb428f.png" width="600">

- `Hello, World`をブラウザに表示させます
    - renderの行を追記します
```ruby:app/controller/users_controller.rb
class UsersController < ApplicationController
  def index
    render plain: 'Hello, World'
  end
end

```  

### 画面を表示
- `rails s`でサーバ起動
    - URLの末尾に`/users/index`を指定します
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2744934/4f19cc02-0e66-e630-6dc6-81cf7ed6f4ef.png" width="600">

## ルーティングの変更
- URLとactionを紐付ける設定

### config/routes.rbを以下の通り修正
```diff_ruby
- get 'users/index'
+ get 'users', to: "users#index"
```

- 画面を表示
    - URLの末尾を`/users`に修正
    - indexの指定が不要になりました
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2744934/245f1bbb-f03b-4195-1696-5a3dc8a54e14.png" width="600">


## Viewで表示
- MVCモデルに従い、Controllerから表示せずViewで表示するように修正します

### viewファイルを修正
- `app/views/users/index.html.erb`を修正
    - `controller名/action名.html.erb`のルールになっています
    - 初期の記述は削除しています
```ruby:app/views/users/index.html.erb
<p>Hello, View!</p>
```

- controllerを修正
    - renderの行を削除しました
```ruby:app/controller/users_controller.rb
class UsersController < ApplicationController
  def index
  end
end
```

- 画面を表示
    - viewに記述した`Hello, View!`が表示されました
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2744934/465fbfc4-6a2e-1ae3-9258-232ff7fa11ce.png" width="600">

## ControllerからViewに値を渡して表示する

```ruby:app/controller/users_controller.rb
class UsersController < ApplicationController
  def index
    @message = "Hello, Controlller!"
  end
end
```

```ruby:app/views/users/index.html.erb
<p><%= @message %></p>
```
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2744934/f1fc5491-5d05-fd5b-7e86-e5e44f496536.png" width="600">

- Controllerでセットした`@message`の内容ををViewで表示しました

## Modleを作成
- `rails g model User name:string age:integer`でUserModelを作成
    - 文字列型のname,数値型のageで構成されるモデル
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2744934/4246aaca-1adc-5748-09fd-30511ff95181.png" width="600">

- migrationファイルが自動生成されています
    - ちなみに会社ではRidgepoleを採択しています、追々やります
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2744934/334c63dd-3ac1-3d65-6eeb-d583691e2bc0.png" width="600">

- migrationを実行します
    - `rails db:migrate`でマイグレーション実行
    - DDLが実行されテーブルができます
    - `rails dbconsole`でSQL操作ができるので、テーブル定義を確認しました
    - この後`tanaka`も作成しました
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2744934/f7f44e95-0936-95cc-184e-eb77f699f274.png" width="600">
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2744934/7dc3106c-b18d-2db7-1281-e031717f8b26.png" width="800">

## データベースの値を画面に表示します
- データを登録します（登録できれば下記方法ではなく、前述したdbconsoleからInsertするでも問題ないです）
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2744934/738ad5ac-214d-ce56-b683-e50313367b33.png" width="800">

- Contollerでusersテーブルのデータ全件を取得します
```ruby:app/controller/users_controller.rb
class UsersController < ApplicationController
  def index
    @message = "Hello, Controlller!"
    @users = User.all
  end
end
```

- Viewで取得したusersのデータ全件を繰り返し出力します
```ruby:app/views/users/index.html.erb
<p><%= @message %></p>
<ul>
  <% @users.each do |user| %>
    <li>
      ID:<%= user.id %>, Name:<%= user.name %>, Age:<%= user.age %>
    </li>
  <% end %>
</ul>
```

- 画面にusersテーブルのデータが表示されました
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2744934/444ac9bf-e7c0-c2af-ec9a-5a085649a110.png" width="600">

## 最後に
- MVCモデルをとりあえず作りたかったため、とてもシンプルな構成になりました
- モデルを増やして、関連あたりも勉強していきたいですね
- やったことを順に手順化しただけなのでわかりにくい可能性あります、ご了承くださいませ