テックキャンプ55日目

kobasaです(´・ω・`)
顎の痛みがまだ完全に治らないので、金曜日は総合病院に行ってきます。
歯医者でレントゲン撮ったら骨と歯に異常は見当たらないぽいんですよね。
…まぁ骨と歯以外に異常がある方が嫌なんですけど。

55日目の勉強内容

レコードの取得順の変更

orderメソッド

テーブルから複数のレコードを取得している記述に追記することで、取得順を変更できるメソッド。
基準とするカラム名と並び順を指定する。並び順の記述方法は、

並び順の指定並び順の内容
ASCAscendingの略。
・小 ⇨ 大 ・古 ⇨ 新 の順に並ぶ。(昇順)
DESCDescendingの略。ASCの逆で、
・大 ⇨ 小 ・新 ⇨ 古 の順に並ぶ。(降順)
@tweets = Tweet.includes(:user) # テーブルから複数のレコードを取得。

order("基準とするカラム名 並び順") # 基準となるカラム名と並び順の指定の間は半角スペースをあける。

@tweets = Tweet.includes(:user).order("created_at DESC") 
# orderメソッドを追記して、取得したレコードを新しく投稿された順(created_atカラムを基準として降順)に並べている。

部分テンプレートについて

部分テンプレートとは部分的にビューの同じ記述をまとめるときに使用する。
コードの記述量が減って保守性が向上する。

_〇〇.html.erb 部分テンプレートファイル名。頭に_をつける。

  • renderメソッド 部分テンプレートを呼び出すのに使用。
  • partialオプション 呼び出す部分テンプレート名を指定。
  • localsオプション 変数と値を指定すると、部分テンプレート内で指定した変数を記述すると指定した値が使える。
<%= render partial: "form", locals: {tweet: @tweet} %>
# 部分テンプレート名は _form.html.erb インスタンス変数@tweetをテンプレート先でtweetという変数名で使用できるようにしている
  • collectionオプション collection: @複数のデータが入っているインスタンス変数名

指定したインスタンス変数の中にある要素の数だけ部分テンプレートが繰り返し表示されるオプション。
このとき部分テンプレートで扱う変数名はpartialで指定した名前と同じになる。
複数の要素が入っていてもeachメソッドを使用しなくても良い。eachを使用しない分こちらの方が読み込みが早い。

  • asオプション as: “変数名”
    部分テンプレートで扱う変数を部分テンプレート名から変更したいときに記述する。
<%= render partial: "tweet", collection: @tweets %>
# partial: "部分テンプレート名(部分テンプレート内で使用する変数名にもなる)", collection: @複数のデータが入っているインスタンス変数名

<%= render @tweets %>
# さらに条件が揃うと上記のように短縮して記述できる。
#・呼び出す部分テンプレートがviews/tweetsディレクトリにある。
#・部分テンプレート名が_tweet.html.erbである。
#・部分テンプレート内で使う変数がtweetである。

短縮の記述はかなり前に誰かがslackにあげてくれてた気がするんですよね。
進捗早いし、プラスアルファ調べてるしすげーわ(´ω`*)

コメント

タイトルとURLをコピーしました