あしあと

明日の自分への情報発信

SQLの学習(4日目)とRailsの学習(1日目)

今日でSQLの学習は終わり。Railsの学習に入る。

 

データの追加、更新、削除

 

テーブルにデータを追加したいときは「INSERT INTO テーブル名(カラム名)」を用いる。そして挿入したい情報を「VALUES(値)」として追加する。

f:id:keropp1234:20200116064303p:plain

 

 

多くの場合、idカラムの追加にはAUTO INSERTが用いられます。

f:id:keropp1234:20200116064403p:plain

 

データの更新

データを更新したいときは「UPDATE テーブル名」とし、「SET カラム名 = "追加したい情報"」を書く。そして更新するレコードを「WHERE id = 変更したいレコード」と書くことで更新される。

f:id:keropp1234:20200116065450p:plain

 

WHEREでレコードを指定しないと全てのデータが更新されてしまうので注意。

f:id:keropp1234:20200116065819p:plain

 

UPDATE実行後にデータを戻すことはできないので、必ず変更したいデータをしっかり確認すること。

f:id:keropp1234:20200116065929p:plain

 

データの削除

データの削除には「DELETE」を使う。下の画像では「DELETE FROM」としてstudentsテーブルから削除することを命令している。そしてUPDATEと同様に削除するレコードを指定する。削除したデータは戻らないのでよく確認すること。

f:id:keropp1234:20200116070322p:plain

 

これもUPDATE同様に、WHEREによるレコードの指定がないと全てのデータが消えてしまうので注意。

f:id:keropp1234:20200116070451p:plain

 

本コース(progate SQLコース)で学んだ4つの構文は以下のとおり。これは大切なので覚えておこう。セミコロンも大事

f:id:keropp1234:20200116070740p:plain

 

Railsの勉強。progateから

Railsでアプリケーションを作るには「rails new アプリケーション名」というコマンドをターミナルで実行してフォルダを作る必要がある。そうすることで入力したアプリケーション名と同じフォルダと開発に必要なファイルが入ったフォルダが作成される。

f:id:keropp1234:20200116180646p:plain

 

開発中のアプリケーションをブラウザで表示するためにはサーバーを起動する必要があり、「rails server」とコマンドすることで完了する。今回はlocalhost:3000にアクセスすれば以下のページが表示される

f:id:keropp1234:20200116180900p:plain



トップページを作成する。

rails generate controller home top」を実行するとトップページが作成できる。

このコマンドを実行すると、新しいWebページが自動で作られ、
localhost:3000/home/top」というURLにアクセスできるようになります。

f:id:keropp1234:20200116181345p:plain

 

ページ作成に必要なものは以下の3つが挙げられる。

f:id:keropp1234:20200116181542p:plain

 

viewとは

viewとは単語の意味するとおり、ページの「見た目」を作るためのHTMLファイル
ブラウザとRailsのやりとりの中で、Railsからビューが返され、ページが表示される。

いわゆるクライアントとホストのリクエストとレスポンスの関係?

f:id:keropp1234:20200116181709p:plain

 

viewはviewsフォルダの中で作られ、viewsフォルダの中に置かれる。
先ほどの「rails generate controller home top」を実行すると、
viewsフォルダの中に「homeフォルダ」と「top.html.erb」という
ファイルが作成される。右の図のように、html.erbは非常にHTMLと形式が似ている。

f:id:keropp1234:20200116181925p:plain

 

viewの中身はhtml.erbを編集すれば変えることができる。

f:id:keropp1234:20200116182125p:plain

 

controllerについて

ページを表示する際、Railsの中のcontrollerによってHTMLを返されている。

f:id:keropp1234:20200116182555p:plain

 

controllerファイルの中身を見てみると、「rails generate controller home top」を実行したとき、「home_controller.rb」というコントローラのファイルが作成され、ファイルの中に「topメソッド」が追加されているのがわかる。このcontroller内のメソッドをアクションという。また、まさにRubyのコードがcontrollerに使われている。

f:id:keropp1234:20200116182845p:plain

 

controller内のアクションは、viewsフォルダ内の、自身と同名のHTMLファイルを見つけ、ブラウザに返す働きを持つ。勝手に作られるとはいえ、これをいじる機会があったら、全て同じ名前に直さないといけないので、最初からファイル名はちゃんと考えないといけない

f:id:keropp1234:20200116183034p:plain

 

rootingとは

Rails内ではcontrollerを介してviewをブラウザに返しているが、ブラウザからcontrollerへの経路を繋ぐのがrootingである。ページが表示されるまでにブラウザ→rooting→controller→view→ブラウザの順番になる。

f:id:keropp1234:20200116192327p:plain

 

rootingはブラウザから送信されたURLに対して「どのcontrollerのどのアクション」で処理するかを決める「対応表」のようなものである。つまり、適切な処理を行うためのルートを作る、仕分けをするからrootingというのだろう。

f:id:keropp1234:20200116192403p:plain

 

ルーティングは「config/routes.rb」に定義され、右の図のように「get "URL" => "コントローラー名#アクション名"」という文法で書かれる。home/topのURLを取得したらhome#topのアクションに送れ、といったところか。

f:id:keropp1234:20200116192437p:plain

 

なので当然rootingに記述のないリクエストが来てもエラーになる

f:id:keropp1234:20200116192441p:plain

 

ではrootingを変えてみるとどうなるか。右の画像のようにURLの「home/」を削ると「localhost:3000/top」というURLでトップページにアクセスできるようになる。URLを変更しても、"home#top" の部分が変わらない限りhomeコントローラのtopアクションに対応するビューファイル(= top.html.erb)の内容がブラウザに表示される。つまりhome#topのcontroller名とアクション名が生きていればtopのviewファイルが呼び出されるということか。ちなみにURLは変更されたので、「localhost:3000/home/top」とするとエラーが表示される。

f:id:keropp1234:20200116193457p:plain

 

新しいページを作ろうとした際、既に使われている名前のcontroller名やアクション名がついていると、作ることはできない。

f:id:keropp1234:20200116194302p:plain

 

となると新しいrootingとactionを作ることになるが、そのときはrootingファイル内とcontrollerファイル内に対応するrootingとactionを作ることで作成できる。

f:id:keropp1234:20200116194412p:plain

さてrootingとcontrollerを作ったら、ブラウザに渡す具体的なページであるviewファイルを作る。これはホームフォルダで右クリック新規作成で作れる。名前はアクション名と同じaboutにする。これによりaboutに関連したページが作られた。

f:id:keropp1234:20200116194625p:plain

 

CSSでレイアウトを整える。

CSSファイルは「app/assets/stylesheets」フォルダに入っている。
rails generate controller home ...」コマンドを実行したときに、CSSファイル(home.scss)も自動生成される。そしてこのCSSファイルにコードを書けば全てのviewにCSSが適用される

f:id:keropp1234:20200116204811p:plain

 

CSSに使う画像の保存場所

画像ファイルは「public」フォルダに画像に入れておくと「<img src="/画像名" >」や「background-image: url("/画像名");」のように、画像名を指定するだけで、簡単に画像を表示することができる。パスの仕組みが簡単!これはすごい。

f:id:keropp1234:20200116205229p:plain

 

トップページのURLを変更する。

localhost:3000」 (後ろに/○○がないURL) に対応するルーティングは、
get "/" => "コントローラ名#アクション名"」というように、URLに"/"を
指定する。

f:id:keropp1234:20200116210042p:plain

 

リンクの作成。

リンクを作成するためには、<a>タグ(ankerの略)でテキストを囲み、「href=" "」の中にURLを指定する。<a href="/">TweetAPP</a>。URLを打ち込む場合は「/」は必須である。左の画像も/aboutになっている。
hrefの中身をルーティングのURL部分と同じにすることで、簡単にリンク先を指定することができる。画像ではトップページへのリンクと紹介ページへのリンクをそれぞれ作成されている。これによりトップページと紹介ページをリンクで行き来することができる。

f:id:keropp1234:20200116210330p:plain

 

railsレッスン2

viewの中で使う変数はアクションで定義する。しかしその変数はそのままでは使えないのでviewに渡す必要がある。そのときは「@変数」とすることで渡すことができる。

f:id:keropp1234:20200116214121p:plain

f:id:keropp1234:20200116214157p:plain

 

共通のレイアウトをまとめる

Railsでは、「views/layouts/application.html.erb」に共通のHTMLを書いておくことができる。下の画像では四角の部分が共通しているので、application.html.erbにひとまとめにする。

f:id:keropp1234:20200116222825p:plain

views/layouts/application.html.erb」には<%= yield %>というコードがある。top.html.erbなどの各ビューファイルは、この<%= yield %>の部分に代入され、application.html.erbの一部としてブラウザに表示される。この仕組みによって、ヘッダーなどの共通のレイアウトを1つにまとめることができる。

f:id:keropp1234:20200116223232p:plain

例えばした二つの画像では、いずれもヘッダーの文字列が表示されている。これは<%= yield %>に一まとめにしたおかげで、各htmlファイルに同じものを書かなくて済んでいる。f:id:keropp1234:20200116223841p:plain

f:id:keropp1234:20200116223846p:plain

 

 

link_toメソッド

Rails ではlink_toというメソッドを使うと<a>タグを作成することができる。 link_to メソッドは Ruby のコードなので、「<%=%>」で囲む必要がある。もしかしてerbってRubyのコードを打ち込むファイルってこと?わからないが
下の画像のように第一引数がブラウザに表示される文字、第二引数がURLになる。こうすることで<a>タブのリンクが作成される。ちなみにトップページなら「/」のみになる。

f:id:keropp1234:20200116224257p:plain