30歳 独学で始めるプログラミング ~WEBデザイン・アプリ開発~

ITスキルに興味がでたので、codeを書いてみたら面白くてハマってしまいました!日々何をやったのかを中心に、記事を書いていきたいと思います。

45日目:Ruby on Rails Ⅱ:データベースを使いこなす/rails consoleに挑戦/共通レイアウト/link_toでリンクを作成 (Post/rails console/save/all/link_to)

<学習日>

45日目

<学習内容>

① Ruby on Rails Ⅱ(47-100%):データベースを使いこなす/rails consoleに挑戦/共通レイアウト/link_toでリンクを作成 (Post/rails console/save/all/link_to)

<参考>

Progateレベル:192

 

<学習内容詳細>

f:id:yakuzen_kokoro:20200818235112p:plain

今日は遅くなりましたが、昨日の宣言とおりRuby on Rails Ⅱを無事終わらせることが出来ました^^

 

途中コンソールでの作業「rails console」が出てきて、少し戸惑ってしまいましたが、なんとか完了です。

 

私はあの黒い画面が、どうも苦手なようですね^^;;

 

 

① Ruby on Rails Ⅱ(47-100%):データベースを使いこなす/rails consoleに挑戦/link_toでリンクを作成 (Post/rails console/save/all/link_to)

f:id:yakuzen_kokoro:20200818235120p:plain

 

今日はデータベースを使ったり、rails consoleをやってみたりとなかなか私にとっては大変な内容でした^^;;

 

理解に苦労しましたが、早速具体的なcodeを挙げながら、振り返っていきます!

 

Ruby on Railsにすでに用意されているクラス「Post」を使いこなす。

前回の最後に「Post」というテーブルを作ってみたいな流れでしたが、実際にはPostというモデル名のデータベースを作成していたようです。

 

app/models/post.rbというように、モデルが定義されたファイルと、マイグレーションファイルが作成される。

なお、モデルは「ApplicationRecord」を継承する形になっている。

 

・「rails console」というコンソール上でrailsを実行することが可能な方法がある
⇒データベースを作成するときなど、サクサクとrailsで簡易的な作業を実行したいときに使う感じ?

⇒そんな感じだった!


・データベースを作成する方法
実際にデータベースに情報を追加していく。
具体的なcodeは以下のような感じ。


<コンソール>
$ rails console ⇐ rails consoleを立ち上げ
post1=Post.new(content:"今日も元気!") ⇐ データベースを追加
post1.save ⇐ 追加したデータベースを記録
quit ⇐ rails consoleを停止

 

これで”今日も元気!”というテキストデータを持ったデータベースが、作成日時等の情報と合わせて、データベースに追加される。


・データベースから情報を取得する方法

今度は作成したデータベースから、実際に情報を取得する。
このとき、データの取得は横一行分を取り出してから、特定の列のセルをゲットすることも出来るといった感じ。

具体的なcodeは以下のとおり。

 

post = Post.first ⇐ 最初の行の情報を取得
post.content ⇐ コンテントという項目(列)のセルの情報を取得


あくまでデータベールはテーブルであることを意識すれば、混乱しにくい。

 

さらに進めていくと、データベースのすべての情報を得て、インデックス番号を指定して、項目の名称を指定すれば、自動的に一つのセルの値を参照することが出来る。
順番に説明すると以下のとおり。

 

①posts=Post.all ⇐ データベースの全ての情報を「配列」として取得
②posts[1] ⇐ 配列のインデックス1の要素を取得
③posts[1].content ⇐ 配列のインデックス1の要素のcontentの項目のデータを取得

 

これらをまとめると、この時に得られる情報を一発で書くには

Post.all[1].contentでOK!

 


・上記のデータベース取得のcodeをエディタ側のcodeに反映させる
具体的に、投稿されたコメントを順番に全て表示するには以下のとおり。

 

<コントローラー:ここでhtmlでの変数を規定する>
@posts = Post.all

 

<ビュー:ここのhtmlにRubyのcodeを埋め込んで、繰り返し処理させる>
<% @posts.each do |post| %>
<%= post.content %>
<% end %>

 

つまり、変数にデータベースから持ってきたテーブル(配列を要素に持つ配列)を突っ込んで、htmlに埋め込んだRubyのcodeで操作するという感じ。


・同じヘッダー等、特定の同じhtmlのcodeをもっているページを何枚も扱うとき、全てにその特定のcodeを反映させる方法

結論として、views/layouts/application.html.erbにまとめてしまうことが出来る。

このファイルを「共通レイアウト」と呼んだりするが、共通でない部分を<%= yield %>で書いて、ここに共通でないhtmlコードを代入して、各々のページをブラウザに反映しているという仕組みなっていることに注意。つまり、<%= yield %>との位置関係を間違えると、とんでもないページになる。


・リンクの作成コード(Ruby)

 

<htmlファイル>
<%= link_to("表示名","url") %>

 

例えば、”ここをクリック”というリンクボタンで、リンク先が"/index"だとした場合、以下のようなcodeになる。

 

<%= link_to("ここをクリック","/index") %>

 

はい、ということで、今日もやや抽象的な内容が続いたので、少し理解に苦労しました^^

 

そろそろ道場も目に入ってきたので、気合を入れて進めていきたいと思います^^

 

ではでは、1日でも長く続けられるように頑張っていきます^^

同志の方、一緒に頑張っていきましょう!