Rails-tutorial初心者（３章）（自分メモ） 

# ３章 ほぼ静的なページの作成

>**3.5.1 本章のまとめ**
新しいRailsアプリケーションをゼロから作成したのはこれで3度目。今回も必要なgemのインストール、リモートリポジトリへのプッシュ、production環境まで行った
コントローラを新規作成するためのrailsコマンドはrails generate controller ControllerName アクション名 (省略可)。
新しいルーティングはconfig/routes.rbファイルで定義する
Railsのビューでは、静的HTMLの他にERB (埋め込みRuby: Embedded RuBy) が使える
常に自動化テストを使って新機能開発を進めることで、自信を持ってリファクタリングできるようになり、回帰バグも素早くキャッチできるようになる
テスト駆動開発では「red ・ green ・REFACTOR」サイクルを繰り返す
Railsのレイアウトでは、アプリケーションのページの共通部分をテンプレートに置くことでコードの重複を解決することができる

では、早速とりかかります。

もとに戻したい時
$ rails generate controller StaticPages home help
$ rails destroy  controller StaticPages home help

$ rails db:migrate
$ rails db:rollback

そろそろ、RESTという言葉が頻出するので、理解をしておこうと思います。
REST(REpresentational State Transfer)とは・・・・・
翻訳してみました・・・・・「表現状態転送」
うーん、、、わかりません。
webサービスの設計モデルです・・・・・？？？？？？よくわかりませんね。

>RESTfulの原則
・アドレス指定可能なURIで公開されていること
・インターフェース(HTTPメソッドの利用)の統一がされていること
・ステートレスであること
・処理結果がHTTPステータスコードで通知されること

やっぱりわかりません。
なんとなく、webサービスへのアクセスやブラウザーサーバ間のやりとりの仕方についてのルールのようなものでしょうか。
アクセスするときはURLを使うが、そのURLの構造をわかりやすくすること。
わかりやすくすることで、利用者がページの遷移を理解しやすくしている？
開発者視点だと、、、構造がととのっていてわかりやすくなる？
また、あるルールにしたがってみんなが開発していれば、開発もしやすくなる。始めてみた人がこのルールに沿って作られているとしれば、大枠がつかみやすくなるから。

いったんOK

### 3.2.1 演習

`$ rails g controller Foo bar buz`
`$ rails destroy controller Foo bar buz`

@2018/10/20

### 3.2.2 
htmlだけでも、railsつかって公開ができるよって？感じ。


### 3.3 テスト駆動開発
テストというと、エクセルに書かれたテストをひたすらやるイメージでした（これがSIerの・・・）
しかも先にテストをきめてから、コードをつくるとは。。。

たしかに、ゴールを先にきまっているからわかりやすい！かも？


3.3.3は完了

##### *Ruby補足*
 変数の式展開について
  @var = "hogehogehoge"
  puts 123 + "456 #{@var}"
 #{変数}で式の中で利用できる。

### 3.4.3 レイアウトと埋め込みRuby (Refactor)

>ビューで「埋め込みRuby」(Embedded Ruby) が使えます。Home、Help、Aboutページには可変要素があるので、Railsのprovideメソッドを使ってタイトルをページごとに変更します。

ビューで「埋め込みRuby」(Embedded Ruby) って？！？

hoghoge.html.erb の erb は 「埋め込みRuby」(Embedded Ruby) のことでした。
これによって、htmlを動的に変更して表示することができます。

そのときに使うのが下記。
<%....%> と provide(rails)
<%=.....%> と yield(ruby)


railsのDRYの考え方・・・・限りなく重複をなくすこと。
この体験ができた。

まだ、HTMLのテンプレートレイアウトとの関係性とかが、わかっていないところもあるが、
このフォルダのこのファイルと関係しているんだ！ていうのがだんだんとみえてくる。



###  演習



```ruby: 
1) Error:
StaticPageControllerTest#test_should_get_contact:
NameError: undefined local variable or method `static_page_contact_url' for #<StaticPageControllerTest:0x0055fbf9109848>
    test/controllers/static_page_controller_test.rb:27:in `block in <class:StaticPageControllerTest>'
```
→XXXXXだから、routes.rbをが怪しい。
`  get 'static_page/contact'` を追記



```ruby:
  1) Error:
StaticPageControllerTest#test_should_get_contact:
AbstractController::ActionNotFound: The action 'contact' could not be found for StaticPageController
    test/controllers/static_page_controller_test.rb:27:in `block in <class:StaticPageControllerTest>'
```
次は、、、contactのアクションがないといわれている。。。。コントローラがあやしい。
下記を追記

```ruby:static_page_controller.rb
  def contact
  end
```
つづいては・・・・

```ruby:
1) Error:
StaticPageControllerTest#test_should_get_contact:
ActionController::UnknownFormat: StaticPageController#contact is missing a template for this request format and variant.

request.formats: ["text/html"]
request.variant: []

NOTE! For XHR/Ajax or API requests, this action would normally respond with 204 No Content: an empty white screen. Since you're loading it in a web browser, we assume that you expected to actually render a template, not nothing, so we're showing an error to be extra-clear. If you expect 204 No Content, carry on. That's what you'll get from an XHR or API request. Give it a shot.
    test/controllers/static_page_controller_test.rb:27:in `block in <class:StaticPageControllerTest>'
```
たぶんファイルがないよってかんじかな？

`touch app/views/static_page/contact.html.erb`
して・・・・

完了！！！
`4 runs, 8 assertions, 0 failures, 0 errors, 0 skips`
エラーが無くなりました。



追加の設定をして完了します。
次は４章。