1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Rails-tutorial初心者(3章)(自分メモ)

Posted at

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のアクションがないといわれている。。。。コントローラがあやしい。
下記を追記

static_page_controller.rb
  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章。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?