プログラミング学習(二日目) ProgateでRuby On Rails レッスン2


今日学んだこと

htmlファイルにRubyの埋め込み方と、変数の定義

拡張子を.html.erbとすると、htmlファイルにRubyのコードを埋め込める

erbとは「Embedded ruby(埋め込みRuby)」の略
具体的には<% %>で囲むと、ブラウザには表示されず、
<%= %>で囲むと、ブラウザに表示される。

また、Railsでは変数はビューファイルではなくアクションで定義するのが一般的。
アクション内で@を先頭につけることによって、ビューファイルでも使えるようになる。
こんな感じ

posts_controller.rb
def index
 @moneys=["yen", "us", "rupee"]
end
index.html.erb
<% @moneys.each do |money| %>
<%= money %>
<% end %>

Railsでのデータベースの扱い方

データベースにデータを保存するには、テーブルを作る必要がある。(今回はpostsテーブルとする)
ちなみに縦の列を「カラム」、横の行を「レコード」という。

postsテーブルを作成する手順

①データベースに変更を指示する「マイグレーションファイル」を作成する
②データベースに変更を反映

マイグレーションファイルの作成方法

$rails generate model Post content:text

と入力。それぞれの意味は、
「Post」は「posts」テーブルを作成するために単数形で宣言。モデル名。
「content:」はカラム名
「text」はデータ型。この場合は、長い文字列を意味する。

そして上のコマンドで
アプリケーション名/db/migrate/ に、マイグレーションファイルができる。内容はまだ理解しなくていいらしい?

次に、

$rails db:migrate

で、マイグレーションファイルを使い、データベースに変更を反映してpostsテーブルを作る。
この時、「id」、「created_at」、「update_at」カラムが作られるが、意味は
「id」がデータベースに入れられた順につけられる番号
「created_at」がデータベースに保存された時間
「update_at」が更新された時間

ちなみに、データベースに反映されてないマイグレーションファイルが存在すると、マイグレーションエラーが起こるので注意。

テーブルの操作方法

$rails g model Post content:text
で、postsテーブルを操作するためのPostモデル(モデルはクラス)が生成されるので、このPostモデルを使って操作する。
このモデル(クラス)は上記のコマンド時に
app/models/post.rb(ファイル名は単数形)
に生成される。

post.rb
class Post < ApplicationRecord
end

このように「ApplicationRecord」を継承したクラスをモデルという。
このモデルを使ってテーブルを操作する。

rails consoleの使い方

コンソールで
$rails console
と打つだけ。Rubyのコードを手軽に実行できるやつ。irbと似てる?。quitで終了。

Postモデルを使い、データベースのpostsテーブルにデータの追加方法

①newメソッドで、Postモデルのインスタンスを生成。
②saveメソッドを使い、postsテーブルに保存

まず①から
rails console上でも.rbファイル上でもいいが、今回はrails console上で行う。

$rails console
    ・
    ・
>post = Post.new(content:"Hello World")
これはcontentが"Hello World"のPostインスタンスを生成し、変数postに代入している。
そして、②の保存は
>post.save
で行う。
saveメソッドが使える理由は、「ApplicationRecord」クラスを継承しているため。

データベースからデータの取り出し方

>post=Post.first
>post.カラム名
で、一行目の指定してカラムのデータを取り出せる

>post=Post.all
で、postsテーブルのすべてのデータを配列として取得可能。

>Post.all[0]
で、idが1のレコードを取得可能。さらに
>Post.all[0].content
で、idが1(一行目)のcontentカラムのデータが取得できる。

このデータの取得は、コントローラのアクション内でも利用可能。

共通のレイアウトのまとめ方

Railsでは、「views/layouts/application.html.erb」に共通のHTMLを書いておける。
これの原理は、application.html.erbには<%= yield%>というコードがあり、各ビューファイルはこのコードに代入され、
application.html.erbの一部としてブラウザに表示されるので。

link_toメソッド

link_toメソッドはRubyのコードで、<%=%>コードで記述する。そうするとHTMLのaタグに対応する。
<%= link_to("投稿一覧", "/about") %>

<a href="/about>投稿一覧</a>

思ったより書く時間がかかったので、これからはもう少し端折ります。