Ruby on Rails Ⅳ 4章 プロフィール画像を表示しよう
20170305@home Progate | プログラミングの入門なら基礎から学べるProgate[プロゲート]
目次
画像を表示しよう
ゴールは、ユーザがプロフィール画像を登録して、ユーザのページで表示できるようになること。
image_tag
画像を表示するにはimage_tag
ヘルパーを使う。画像ファイル名を指定すると、app/assets/images
の中にある画像を表示しれくれる。
→さらにフォルダを分けたりしたら、どうなる?
画像を保存する準備をしよう
ユーザごとにプロフィール画像を登録できるよう、userテーブルにimageカラムを追加する。
画像はpublicフォルダを作ってそちらに保存する。
画像をアップロードするしくみ
file_field
ヘルパーを使う。よく見る「ファイルを選択」ボタンの付いているアレが実現できる。
画像を保存しよう
スライドが「コードはこうです。」でさらっと流れてしまった。。
インスタンスメソッドを定義しよう
画像を保存するコードを、createでもupdateでも使いたいので、インスタンスメソッドとして定義する。
ここで「あれ?コードを使いまわしたいときに使うのはパーシャルじゃなかったの?」という疑問が出そう。
- パーシャル:ビューファイルのコードの一部分を抜き出したもの
- インスタンスメソッド:そのインスタンスに対していろんな場所で使いたい共通処理だから、モデルの中でメソッドとして定義すればいい
かと。
(こういう点を頭でわかったつもりで放置しないで、後輩に説明できるレベルで理解するのが大事な気がした)
プロフィール画像を表示しよう
ユーザ一覧で、画像を登録しているユーザはその画像を、登録していないユーザはデフォルト画像を表示する。
ヘルパーを作る
ユーザが画像を登録しているかどうかで出し分ける部分のコード、毎回書くのは面倒。
画像表示は複数箇所で行いたいので、ビューで使う画像表示部分のコードをヘルパーにまとめる。
※「何度も使うコードは一つにまとめる」という目的を果たすために、パーシャルなのかインスタンスメソッドなのかヘルパーなのか、説明が欲しいところ。 端折ってるけど、多分説明必要。
今回作ったimage_for
が受け取るのはユーザーオブジェクト。途中まで間違えてimageを受け取ろうとしていた。
今回の勉強時間:43分 累計勉強時間:11時間27分