アプリを作成する　ユーザーの一覧を表示させる

# ヘッダーに表示させる。
progateに```application.html.erb```を使ってヘッダーを統一しようと思う。
まず```application.html.erb```を確かめてみる。

## ```application.html.erb```を確認
```application.html
<!DOCTYPE html>
<html>
  <head>
    <title>Garden</title>
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <%= stylesheet_link_tag "application" %>
  </head>

  <body>
    <%= yield %>
  </body>
</html>
```
```<%= yield %>```で表示されるようになっている。
### そもそもこの```yieldとは何か？
参考書を読んでみた。
```rb
irb(main):010:1* def greeting
irb(main):011:1*   puts 'おはよう'
irb(main):012:1*   puts 'こんばんは'
irb(main):013:0> end
=> :greeting
irb(main):014:1* greeting do
irb(main):015:1*   puts 'こんにちは'
irb(main):016:0> end
おはよう
こんばんは
=> nil
irb(main):017:1* def greeting
irb(main):018:1*   puts 'おはよう'
irb(main):019:1*   yield
irb(main):020:1*   puts 'こんばんは'
irb(main):021:0> end
=> :greeting
irb(main):022:1* greeting do
irb(main):023:1*   puts 'こんにちは'
irb(main):024:0> end
おはよう
こんにちは
こんばんは
=> nil
irb(main):025:1* def greeting
irb(main):026:1*   puts 'おはよう'
irb(main):027:1*   yield
irb(main):028:1*   puts 'こんばんは'
irb(main):029:0> end
=> :greeting
irb(main):030:1* def greeting
irb(main):031:1*   puts 'おはよう'
irb(main):032:1*   yield
irb(main):033:1*   yield
irb(main):034:1*   puts 'こんばんは'
irb(main):035:0> end
=> :greeting
irb(main):036:1* greeting do
irb(main):037:1*   puts 'こんにちは'
irb(main):038:0> end
おはよう
こんにちは
こんにちは
こんばんは
=> nil
irb(main):039:0> greeting
おはよう
(irb):32:in `greeting': no block given (yield) (LocalJumpError)
```
これやってみて思ったことは
メソッドにyieldを書き込み設定した後　ブロック構文を作動させるとブロック構文の処理が作動し、yieldに表示されるみたいだ。
つまり他のhtmlはブロック構文の扱いなのか？
早速progateを見てみよう。
```user.html.erb```や```posts.html.erb```にもブロック構文が見当たらなかった。
どう言うことだ？

Progateを真似してヘッダーとフッターをつけてみた。
```application.html
<!DOCTYPE html>
<html>
  <head>
    <title></title>
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <%= stylesheet_link_tag "application" %>
  </head>

  <body>
    <header>
       hogehoge_header
    </header>

    <%= yield %>

    <footer>
       hogehoge_footer
    </footer>
  </body>
</html>
```
```show.html
<div class="edfg">
  <div>ユーザー紹介</div>
  <div>
    id:
    <%= @user.id %>
  </div>
  <div>
    ユーザー名：
    <%= @user.name %>
  </div>
</div>
```
これのどこがブロック構文なのか分からない。
```
hogehoge_header
ユーザー紹介
id: 70
ユーザー名： あ
hogehoge_footer
```
と表示されたので問題はないのかな？
機械側がうまくやってくれてそうな気がする。
これは今はできない。

# ホームページから一覧ページに飛ぶようにする
```routes.rb
Rails.application.routes.draw do
  get '/',                       to: 'home#top'
  get 'users/:id',               to: 'users#show'
  get 'users/index',             to: 'users#index'
end
```
```application.html
.
.
.
<header>
       <li>
         <%= link_to "ユーザー一覧", "/users/index" %>
       </li>
.
.
.
```
```users_controller.rb
  def index
    @users = User.all
  end
```

```index.html
    <div>
      <%= @users.each do |user| %>
        <%= link_to user.name, "/users/#{user.id}" %>
      <% end %>
    </div>
```
# なぜかindexで要求するとshowアクションが作動する...
まさかここの順番がおかしいからなのか？
```routes.rb
Rails.application.routes.draw do
  get '/',                       to: 'home#top'
  get 'users/:id',               to: 'users#show'
  get 'users/index',             to: 'users#index'
end
```
```routes.rb
Rails.application.routes.draw do
  get '/',                       to: 'home#top'
  get 'users/index',             to: 'users#index'
  get 'users/:id',               to: 'users#show'
end
```
成功！
リンクは表示されたが謎の配列が表示された。
ここはもっと勉強しなければならない。

# 思ったこと
・謎の配列の対処
・ルーティングの上下関係の問題

出典　プロを目指す人のためのRuby入門(技術評論社）