Rails学習メモ(初学者向け)
どうも、nus4です。
Rails講座の学習メモ2回目です。
複雑な内容になってくるのを感じていますが、
そういうときこそ、この学習メモ(アウトプット)が理解に役立っています。
お付き合いいただけますと幸いです。
学習方法
- Progate Ruby on Rails5コース
(Ruby学習に引き続き、愛用させてもらってます!)
📝 目次
- Viewファイル(HTMLファイル)内の変数の書き方
- Viewファイル(HTMLファイル)内の配列の書き方
- アクション内での変数の定義
- テーブル(マイグレーションファイル、モデルファイル)の作成
- Rails環境でRubyコンソールを起動
- テーブルにデータ(レコード)を保存
- テーブルからデータを取り出し(Railsコンソール)
- テーブルからデータを取り出し(アクション)
- 共通のレイアウトをまとめる
- HTMLにリンクを追加
Viewファイル(HTMLファイル)内の変数の書き方
# 変数の定義
<% 変数名 = "値" %>
# 変数の表示
<%= 変数名 %>
Viewファイル(HTMLファイル)内の配列の書き方
# 配列の定義
<%
配列名 = [
値1,
値2
]
%>
# 配列の表示(each do)
<% 配列名.each do |変数名| %>
<%= 変数名 %>
<% end %>
each doのはじめと終わりは表示用ではないので「<%= %>」ではなく「<% %>」で囲むことに注意。
アクション内での変数の定義
def アクション名
@変数名 = 値
end
ビュー内で宣言することもできますが、なるべくアクション内で宣言するようにしましょう。
変数名を「@」から始めることでビューファイルでも使用することができますので、つけ忘れないように注意しましょう。
テーブル(マイグレーションファイル、モデルファイル)の作成
# ターミナルコマンド
$ rails g model モデル名 カラム名:データ型
$ rails db:migrate
# 作成されるファイル
# db/
# └── migrate/
# └── YYYYMMDDhhmmss_create_データベース名.rb # マイグレーションファイル
#
# app/
# └── models/
# └── モデル名.rb # モデルファイル
マイグレーションファイルとは、データベースに変更を指示するファイルです。
データベース名は基本的に複数形で命名されるので、モデル名はデータベース名の単数形にします。(頭文字は大文字)
モデルファイルとは、テーブルを操作するファイルです。
ApplicationRecordクラスを自動的に継承しており、それにより、様々なデータベースに関するメソッドが使えます。
2行目のdb:migrateコマンドでマイグレーションファイルをデータベースに反映(作成)させます。
テーブル作成時は指定したカラム以外にid, created_at, updated_atという3つのカラムも自動で作成されます。
「rails g」の「g」は「generate」の略称です。
略さず書いても問題なく動作します。
Rails環境でRubyコンソールを起動
# ターミナルコマンド
# コンソールの起動
rails console
# コンソールの終了
quit
テーブルにデータ(レコード)を保存
# rubyコンソールを起動した状態で
# ①newメソッドでモデルクラスのインスタンスを作成
インスタンス名 = モデル名.new(カラム名: "値")
# ②インスタンスをテーブルに保存
インスタンス名.save
.saveメソッドはモデルクラスの継承元であるApplicationRecordクラスが持っているメソッドであり、メソッドの宣言は不要です。
データはデータベースの一番新しいidで保存されます。
テーブルからデータを取り出し(Railsコンソール)
# テーブルにある最初のデータを取得する
変数名 = モデル名.first
# 取得したデータの特定のカラム値を取得する
変数名.カラム名
# テーブルにある全てのデータを配列として取得する
変数名 = モデル名.all
# 取得した配列からインデックス番号"0"のデータの特定のカラム値を取得する
変数名[0].カラム名
テーブルからデータを取り出し(アクション)
def アクション名
@変数名 = モデル名.first
@変数名 = モデル名.all
end
共通のレイアウトをまとめる
Railsでは、「views/layouts/application.html.erb」に共通のHTMLを書いておくことができます。
このファイルには<%= yield %>というコードがあり、各ビューファイルはこの<%= yield %>部分に代入され、application.html.erbの一部としてブラウザに表示されるからです。
ヘッダーなど、使い回すレイアウトはここに集約させましょう。
HTMLにリンクを追加
<%= link_to("画面表示名", "/リンク先URL") %>
うまくまとめられているでしょうか…
改善や修正があればご指摘ください!