ビューファイルでインスタンス変数を使う時
どうも、お疲れ様です!
IHです!
さて、明日に備えて(もう今日ですが。😅)、
寝ようとしていたところでしたが。
でしたが、
ちょっとどうしてもアウトプットしておきたい事があったので、書いております。
それはRailsについてのことなんですが
「コントローラーファイルで、アクション内に定義したインスタンス変数は、対応するビューファイルでも使用できる」
という内容です。
この私IH、ちょっとこのあたりの理解が曖昧だったのですが、さっきテックキャンプのカリキュラムで復習していたら
、
「あっそういうことか!」
と、点と点が繋がる感覚があったので!
忘れずアウトプットしていきたいと思います!
それではいってみよう!
ーーーーーーーーーーーーーーーーーーーーーーー
さて、早速ですが、アウトプットしたい内容は以下の通りです。
コントローラーファイル内で
といったように定義したインスタンス変数は、そのアクションに対応するビューファイルにも、その定義したインスタンス変数を利用する事ができる。
たとえば、postsコントローラーファイルで、indexアクションに
と記述したら、
app/views/postsディレクトリ内の
index.html.erbというビューファイルに、コントローラーのinndexアクションで定義したインスタンス変数を使用できる分です!
それで、ここからがポイントなのですが。
ビューファイルで使いたいからといって、
<%= @post %>
と書いてしまっては、エラーが出てしまいます。
(ビューファイルで表示させたい処理があるときは、<%= %>の間に記述します)
これは、コントローラーで定義した@postには、
postsテーブルの一番目のレコードが丸ごと入っているためです。
例えば、postsテーブルの1番目のレコードに以下のようなデータが入っていたとします。(自分のノートです😁)
どうやら一番目のレコードのデータには「idカラム」「contentカラム」「created_atカラム」という3つのカラム(項目)があるようです。それらのカラムの値を見てみると
・id:1
・content:はじめまして
・created_at:2020-01-01-00:00:00(レコードが作られた時間は2020年1月1日0時0分0秒ということ)
となっています。
したがって、ビューファイルで
と書いてしまうと、コンピューターが
「えっ? いやテーブルの一番目のレコードのデータが欲しいのまではわかるけど、一体どのカラムの値が欲しいのよ!?
id? content? created_at?
アーンあたしわかんない誰か教えて〜!」
何でオネエ口調なんだこのコンピューター、というツッコミは置いといて。
要するに、表示させたい値を1つまで絞ってあげないと、コンピューターがどれを表示させればいいかわからず、混乱してしまうわけですね。その結果、エラーが起きると。
では、どうすればいいの?
簡単です。カラムを指定してあげればいいんです。
具体的な方法としては、
*カラム名の前には、(.)ドットを記述することも忘れずに!
つまり、ビューファイルのindex.html.erbで、
postsテーブルの一番目のレコードカラムの
「contentカラム」
を表示させたければ、
と記述することになります!
ーーーーーーーーーーーーーーーーーーーーーーー
いかがでしょうか?
最近、応用カリキュラムの内容が、基礎の時よりちょっと複雑になり、
「うーん、一度今までのRuby、Railsの内容を復習しておくほうがいいかもなぁ」
と感じていました。
それで、今日は復習を中心に勉強していこうと思っていたわけですが……。
いやーいい復習になりました! 今日はちょっとだけ前に進めた気がします!
この調子で、楽しくどんどんプログラミングを学んでいきたいと思います!
それではこの辺で!
ここまで読んでくださり、ありがとうございました!