3章 ほぼ静的なページの作成
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のテンプレートレイアウトとの関係性とかが、わかっていないところもあるが、
このフォルダのこのファイルと関係しているんだ!ていうのがだんだんとみえてくる。
演習
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'
を追記
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のアクションがないといわれている。。。。コントローラがあやしい。
下記を追記
def contact
end
つづいては・・・・
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
エラーが無くなりました。
追加の設定をして完了します。
次は4章。