Bootstrap導入手順をまとめてみた（RubyonRails）

初めまして！
弱弱駆け出しエンジニアのてしまと申します。

初投稿です！

今回は**RubyonRailsでのBootStrapの導入手順**についてまとめてみました。
導入自体は簡単です！
もし僕のような初学者でBootstrapに興味がある方は参考になればと思います。
実際に使った例も載せているため後半は長くなっております。

#内容
①RubyonRailsにBootstrapを導入
②Bootstrapを使ってテーブルとボタンの装飾

#対象者
・RubyonRailsで簡単なアプリケーションを立ち上げたことがある
・Bootstrapを知らないor使ってみたいと考えている
・Scaffoldを使ったことがある（無くても導入はできます）

#Bootstrapとは
CSSの「フレームワーク」
通常CSSを書く場合、全てのスタイルを自分で作っていく必要がありますが
このフレームワークにはよく使われるスタイルがあらかじめ定義してあるので
ルールに沿って利用するだけで整ったデザインのページを作成できます。
（引用：https://techacademy.jp/magazine/6270）

色々調べているとBootstrapをダウンロードすると出てきましたが
今回、Gemを使ったので特にダウンロードせずに使えました。

#前提条件
今回はBootstrapの導入と一部使用例をまとめています。
予めscaffoldを使ってtasksテーブルを作成。titleカラム、textカラムを追加しております。
今回使いませんがdeviseも入れてます。

では早速本題の導入手順です。
#RubyonRailsでBootstrapを使えるようにする
#①Gemの導入

まずはGemfileにgemを導入します。

```Gemfile.
gem 'bootstrap', '~> 4.1.1'
gem 'jquery-rails'
```

jqueryは今回使っていませんが、いつか使うと思われるので入ってなければ記述。

```ターミナル.
bundle install
```
bundle installも忘れずに。

#②SCSSファイルにimport
application.cssをapplication.scssに名前を変更。
そして以下の文を追記

```application.scss
@import "bootstrap";
```

一応application.jsにも追記

```application.js
//= require bootstrap
```

はい！以上で準備完了です！
これだけでBootstrapが使えるようになります！
肝心の使い方があまり載ってなかったので
実際にコードを入れて装飾してみたいと思います。

#Bootstrapのコードを実際に入れてみる

では実際にBootstrapを使って装飾をしていきます。
装飾前がこんな感じです。
Scaffoldで生成してるのである程度形は整ってます。
<img width="345" alt="スクリーンショット 2020-07-28 15.26.59.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628711/d840f5b4-b924-802e-472b-e93a48638e5c.png">


###①まずはHPにアクセス

「Bootstrap　HP」
https://getbootstrap.com/

<img width="1433" alt="スクリーンショット 2020-07-28 13.31.57.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628711/0fadbcd4-a18d-36f4-bda6-ec7613aa8852.png">

ヘッダー左2番目の**Documentation**をクリックして参考コードを検索しに行きます。

###②作りたいCSSを検索
<img width="1433" alt="スクリーンショット 2020-07-28 13.32.12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628711/b257a317-fb2e-d679-e324-66d9a6ce9f94.png">
今回はテーブルを作るので**「table」**で検索
するとサンプル画像とそのコード一覧が出てくるので使いたいものを選びコピペするだけです！

###③使いたいコードをコピー

一覧は画面の大きさの都合上、割愛してます。
今回は以下の画像サンプルのコードを使って実装していきます。

<img width="961" alt="スクリーンショット 2020-07-28 13.57.09.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628711/882e5abb-251f-4479-4850-66517debb152.png">

###③エディタに貼り付け

先ほどコピーしたコードをエディタの対象ファイルに貼り付けます。
今回はviews/tasks(ご自身のファイル名）/index.html.erb
一旦、一番下などに貼り付けしてしっかり反映するか確かめてみると良いです。
下記はコピーして貼り付けただけです。
このテーブルタグの中身の記述（白テキスト部分）を自分のデータに置き換えていきましょう！

```erb
<table class="table table-striped">
  <thead>
    <tr>
      <th scope="col">#</th>
      <th scope="col">First</th>
      <th scope="col">Last</th>
      <th scope="col">Handle</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th scope="row">1</th>
      <td>Mark</td>
      <td>Otto</td>
      <td>@mdo</td>
    </tr>
    <tr>
      <th scope="row">2</th>
      <td>Jacob</td>
      <td>Thornton</td>
      <td>@fat</td>
    </tr>
    <tr>
      <th scope="row">3</th>
      <td>Larry</td>
      <td>the Bird</td>
      <td>@twitter</td>
    </tr>
  </tbody>
</table>
```

###④記述場所にデータを置き換え(index.html.erbファイル）

貼り付け前のファイルの記述がこちらです。（参考までに）
views/tasks/index.html.erb

```erb
 <p id="notice"><%= notice %></p>
<h1>Tasks</h1> 
<table> 
   <thead>
     <tr>
       <th>Title</th>
     <th>Text</th>
       <th colspan="3"></th>
     </tr>
   </thead> 
   <tbody>
     <% @tasks.each do |task| %>
       <tr> |
         <td><%= task.title %></td>
         <td><%= task.text %></td>
         <td><%= link_to 'Show', task %></td>
         <td><%= link_to 'Edit', edit_task_path(task) %></td>
         <td><%= link_to 'Destroy', task, method: :delete, data: { confirm: 'Are you sure?' } %></td>
     </tr>
     <% end %> 
 </tbody> 
</table>
<br>
<%= link_to 'New Task', new_task_path %> 
```


Bootstrapのサンプルに余計なテーブルがあるので削除。
先ほどコピペしたコードのテーブルタグの中身を表示したいデータの記述に置き換えます。
バーっと作ったのでインデントなど細かいところはすみません💦
変更場所は見比べていただければと思います。
貼り付けがうまくいったら元々あった記述は消しちゃいましょう。  　　
以下が変更後の記述です。

```erb
<h1>Tasks</h1>
<% if user_signed_in?%>
  <%= link_to "ログアウト", destroy_user_session_path, method: :delete %>
<% else %>
  <%= link_to "新規登録", new_user_registration_path %>
  <%= link_to "ログイン", new_user_session_path %>
<% end %>
<%# ----------以下がBootstrapのテーブル---------- %>
<table class="table table-striped">
  <thead>
    <tr>
      <th scope="col">No</th>
      <th scope="col">Title</th>
      <th scope="col">Text</th>
      <th scope="col">Date</th>

      <th scope="col">Show</th>
      <th scope="col">Edit</th>
      <th scope="col">Destroy</th>
    </tr>
  </thead>
  <tbody>
      <% @tasks.each.with_index do |task, no| %>
        <tr>
          <td><%= no++1 %></td>
          <td><%= task.title %></td>
          <td><%= task.text %></td>

          <td><%= task.created_at.strftime('%Y/%m/%d %H:%M')  %></td>
          <td><%= link_to 'Show', task %></td>
          <td><%= link_to 'Edit', edit_task_path(task) %></td>
          <td><%= link_to 'Destroy', task, method: :delete, data: { confirm: 'Are you sure?' } %></td>
        </tr>
      <% end %>
    </tbody>
</table>
<%# ----------以上がBootstrapのテーブル---------- %>
<br>
<%= link_to 'New Task', new_task_path %> 
```

完成図と相違があると困惑するため
deviseで使っている上の部分の記述があります。
気になさらずに。
コメントアウトで区切っている中身のみをご確認ください。

###⑤ボタンも作成
せっかくなのでボタンも入れてみましょう！
今度は「btn」で検索して（検索方法は色々あると思います）
<img width="956" alt="スクリーンショット 2020-07-28 14.04.50.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628711/e8e43b6e-dadd-ca61-ece8-94173a9d43f4.png">
以上のように色々出てきました。
今回は新規投稿ページにリンクさせたいので画像最下部のaタグのCSSを拝借。

まずは以下のリンクの記述を削除し

```erb
<%# ----------以上がBootstrapのテーブル---------- %>
<br>
<%= link_to 'New Task', new_task_path %> 
```

以下のように書き換え
※引用元の**a href=**後ろのリンク先の記述とタグ内の文字を変更しただけ
引用元に合わせてPrefixからURIパターンに書き換えてます。

```erb
<br>
<a href="tasks/new" class="btn btn-primary btn-lg active" role="button" aria-pressed="true">New Task</a>
```


#完成画像
<img width="1436" alt="スクリーンショット 2020-07-28 13.34.25.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628711/9f0b2ed1-7c22-0874-5140-55a7acc8d032.png">

HTMLの記述だけでサンプル画像と同じ見た目の装飾ができました！
（CSSのクラス名がBootstrapによって決められているため）
この高さの揃った綺麗なテーブルを作るのが意外と大変•••
きっと初学者の方なら共感いただけるかと思います。

Bootstrapを使えば決まったレイアウトにデータを置き換えるだけなので
このように簡単にCSSを作成可能！
アイコンなどもたくさんあったのでFontawsome派の方もぜひみる価値はありそうです！
今後はJSなども色々試してみてみたいと思います！

#参考資料
初めてのRuby on rails Bootstrap導入編 [Memo for neko]
https://qiita.com/Matteneko3/items/4dae9e55054e4a4affb4


参考資料の方の記事を長く書いただけの記事です、、、
画像もつけて結構丁寧に書いたつもりですが
初投稿なのでもし間違っている点、ご意見などございましたら
コメントに残していただけると勉強、励みになります🙇‍♂️💦
よろしくお願いいたします。