rails チュートリアル第３章 静的ページ

インスタンスが消えたので３章からやり直しています。

##ほぼ静的なページの作成
静的なページとは、いつどこでアクセスしても毎回同じものが表示される
例　HTMLファイルで作成されたWebページのこと
動的ページとは、アクセスしたときの状況に応じて異なる内容が表示されるWebページのこと
例　ユーザーが書き込むことで内容が増える掲示板サイトやブログ、表示内容がユーザーごとに違うショッピングサイトや会員制サイトなど

###sample_appをセットアップ
sample_appを生成
```
rails _6.0.3_ new sample_app
```
sample_appの中のGemfileを書き換え
Gemfileを書き換えると下を行うらしい。

```
$ bundle install
```
production環境でしか使わないgemはインストールしないよにする

```
$ bundle install --without production
```
成功した。

####README.rbを書き直しをする
このアプリでの具体的な作業内容を書く

```
git remote add origin https://github.com/<あなたのGitHubアカウント名>/sample_app.git
```
GitHub上にリポジトリを作成のショートカットができる

```
git push origin master
```
リモートにもpush
READMEを編集する


```
git push origin master
```
編集したものをgithubで上書きする

```
# Cloud9 への接続を許可する
  config.hosts.clear
```
この手順でCloud９の設定が終わる

####ここからsample_appのコードを書いていく
```rb
class ApplicationController < ActionController::Base
# 子と親の関係だった気がする

  def hello
  # helloアクション
    render html: "hello, world!"
  　# htmlに""を出力させる
  end
end
```

```rb
Rails.application.routes.draw do
# 何を書いているかはわからない
  root 'application#hello'
  # rootは流れだったような気がする
  # applicationコントローラのhelloアクションを起こす
end
```
これでhello, world!が出力されると思う

```
$ git commit -am "Add hello"
$ git push
$ heroku create
$ git push heroku master
```
細かくデプロイすることでデバッグをしやすくなる　

```
$ heroku logs         # 直近のイベントを表示する
$ heroku logs --tail  # イベント発生のたびに自動表示する（Ctrl-Cで終了）
```
Herokuに展開するときにエラーが発生した場合は、上のコマンドを実行して本番環境のログを取得。
このログは、問題を特定するときに役立ちます。
Railsのアクションは、コントローラの中に置きます
##静的ページ
ここからサンプルアプリケーションの開発に取りかかるらしい。
Railsのアクションやビューを使って静的なHTMLのみのページを作成し、
その後、静的なページを動的なページに作り変えていきます

```
git checkout -b static-pages
```
上をすることでページを改良するときに影響を与えないようにする

###静的なページの作成
scaffold生成に使った generate スクリプトで、コントローラを生成、コントローラ名を「Static Pages」に決める
コマンドラインでHomeページとHelpページ用のアクションもまとめて生成
アクション名はすべて小文字のhome、help、aboutにします。

```
rails generate controller StaticPages home help
```

```
$ git add -A
$ git commit -m "Add a Static Pages controller"
$ git push -u origin static-pages
```
単に次のコマンドを実行するだけで同じプッシュが行われるようになります

```
$ git push
```
home アクションと helpアクションを生成したので、routesファイルにはそれぞれのアクションで使われるルールが定義

```rb
Rails.application.routes.draw do
  get 'static_pages/home'
  # static_pagesコントローラからhomeアクションに紐付けされる
  # getでアクセルすることでページを取得することができる
  get 'static_pages/help'
  root 'application#hello'
  # rootは流れだったような気がする
  # applicationコントローラのhelloアクションを起こす
end
```
StaticPagesコントローラは一般的なRESTアクションに対応していないことに注意してください。
static_pages_controller.rbはStaticPagesControllerというクラスを定義していることが分かる。

```rb
class StaticPagesController < ApplicationController
  def home
  end

  def help
  end
end
```
このようなクラスは、メソッド（関数とも呼ばれます）をまとめるときに便利な手法
StaticPagesControllerがApplicationControllerというRailsのクラスを継承している
StaticPagesControllerのメソッドは（たとえ何も書かれていなくても）Rails特有の振る舞いをします。
RailsはStaticPagesコントローラを参照し、homeアクションに記述されているコードを実行します。その後、そのアクションに対応するビューを出力します。

```html
<h1>StaticPages#home</h1>
<p>Find me in app/views/static_pages/home.html.erb</p>

```
helpも同様にHTMLがある。

###静的なページの調整

```html
<h1>Sample App</h1>
<p>
  This is the home page for the
  <a href="https://railstutorial.jp/">Ruby on Rails Tutorial</a>
  sample application.
</p>
```
リンクをつけると動的なページになるらしい。

###HTTPメソッド
Web上のデータを読み取る（get）ときに使われる。
POSTリクエストは何かを作成するときに使われる。
PATCHと DELETEという2つの操作があり、サーバー上の何かを更新したり削除するときに使われる。
しかしGETやPOSTほどは使われない。

###困ったこと
####herokuのアプリ削除
herokuのアプリを削除するためにクラウド９でやろうと思ったが
わからなかったのでサイトで削除できるか調べてみた。
・削除したいアプリをクリック
・移動した画面のsettingをクリック
・一番下までスクロールしてDelete app...をクリック
・最後は削除したいアプリの名前を入力して削除完了
よかった。