Railsチュートリアルの続きです。前回は第3章で静的なページを作りました。今回は第4章、Rails風味のRuby。Rails風味とはどんな意味なのか。今回はRailsというよりはRubyがメインになりそう。それではいきましょう!
【目次】
Ruby/Ruby on Railsを習得するためにやったこと まとめ qiita.com
Railsコンソール出力
putsは自動的に改行\nが付くprintの出力は改行がない- 文字列の中に式展開
#{ }を埋め込むことができる - Rubyの文字列はダブルクォート、シングルクォート両方使えるが、シングルクォートは式展開が使えない(逆に言えばシングルクォートは特殊文字もそのまま出力できる)
オブジェクト
- Rubyではあらゆるものがオブジェクト
- 文字列に
lengthメソッドを繋げると文字数を返す empty?のように末尾に疑問符?をつけると論理値true、falseを返す(if文の条件などに使える)- 論理値はAND
&&、OR||、NOT!などもある - Rubyでは空
nillもオブジェクト - オブジェクトに複数のメソッドを繋げて実行することもできる(メソッドチェーン)
- Rubyには暗黙の戻り値を返す機能があるが、
returnを付けて明確に返すこともできる(見た目がわかりやすくなる)
配列
splitメソッドで文字列を配列に分割できるsplitメソッドは初期状態ではスペースが区切られるsplitメソッドに引数を入れるとその文字列で区切られる- 配列のカウントは0から始まる(ゼロオリジン)
- マイナスをつけると後ろから数える
- 配列に
sortなどのメソッドをつけると実行後の結果が返されるが、元の配列に影響はない - 変更したい場合は破壊的メソッドにする(メソッドの末尾に
!をつける) pushメソッドまたは<<で値を追加できるjoinメソッドで配列を結合した文字列にできるjoinメソッドに引数を入れると区切り文字を挿入できる..で範囲指定ができる(0..9)、[0..9]などto_aメソッドを付けると配列に変換できるeachメソッドやmapメソッドとブロック{ }で繰り返し処理ができる(ブロックの中の| |は変数)do〜endもブロック
ハッシュとシンボル
- ハッシュはJSでいうオブジェクト(連想配列)みたいなもの
- ブロック
{ }の中でキーと値の区切りはアロー=> - キー名は文字列でダブルクォートで囲う(json形式に似ている)
- ハッシュのキーはRubyでは文字列よりシンボルを使うのが一般的
- シンボルは頭にコロン
:を付ける - キー名の後ろにコロン
:を付けるとアロー=>を省略できる(JSのオブジェクトに似ている) inspectメソッドで配列やハッシュの中身を表示することができる
CSS
<%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
stylesheet_link_tagはCSSのリンクタグを生成する- Rubyのメソッドは丸カッコ
( )を省略できる - ハッシュが引数の最後の場合波カッコ
{ }を省略できる - Rubyのコードは改行と空白を区別しない
- 一つ目の引数はCSSのパス、二つ目の引数はTurboの設定
- ERBの中でcssをリンクしたlinkタグに変換される
- cssファイルの名前は16進数の長い名前に変換されている(Rails側で実行されている)
※参考:stylesheet_link_tag | Railsドキュメント
※参考:Turbo: The speed of a single-page web application without having to write any JavaScript.
クラスのコンストラクタ
- オブジェクトの中でメソッドにまとめたいものをクラスを使う
- インスタンスを生成するとクラスも自動的に生成されている(省略されている=リテラル)
- インスタンスオブジェクトに
.classメソッドを付けるとstringクラスなどクラスの種類がわかる newメソッドで省略せずにクラスを生成することもできる(=コンストラクタ)- 文字列コンストラクタ
String.new、配列コンストラクタArray.new、ハッシュコンストラクタHash.new - ハッシュコンストラクタに引数がない場合は
nill、引数あるとその値が初期値になる - クラスメソッドはクラスが直接呼び出すメソッド(
.で繋ぐ) - インスタンスメソッドはインスタンスが呼び出すメソッド(
.や#で繋ぐ)
クラスの継承
- クラスの継承元の親クラスを
superclass、継承先の子クラスをsubclassという superclassメソッドで親クラスを調べられる(連続で繋ぐと先祖を辿れる)- クラスを定義するとき、クラス名のあとに
< 親クラス名で親クラスが継承される(親クラスのメソッドも継承される) selfはオブジェクト自身を表す- Rubyは組み込みクラスも変更できるが、正当な理由がない限りは変更しない方がいい
ユーザークラス
- Userクラスを作成する
- アクセサー(accessor) を作成
name:など:をつける - それによって
@nameなど@がついたインスタンス変数にアクセスできる initializeはUser.new実行時に自動的に実行されるメソッド- Railsコンソールで
requireでファイルを読み込む - User.newを実行、メソッドを実行できる
- マスアサインメント:User.new実行時に引数にハッシュを入れて実行する
終わりに
4章はRailsコンソールでメソッドを実行したりクラスを作成したりして、Ruby本体の理解を深めるような内容でした。5章はBootstrapを使ってCSSスタイルを追加していく内容になるようです。
なお、今回からよりコーディングや学習の方にリソースを割いていくため、ブログは箇条書きメモ方式にしていこうと思います。
それではまた!
Ruby/Ruby on Railsを習得するためにやったこと まとめ qiita.com