知ってる人にとっては当たり前のことかもしれないですが、
少しハマったので、僕と同じ初心者の人で、今後同じことで困ってる人を助けたい!!
ので、書き残しておきます!
やりたいこと
projectsコントローラで、projectのidが1のものを、whereメソッドを使って取得
def show
@project = Project.where(id: 1)
end
viewでその@projectのidを表示させる。(hamlで書いてます)
.contents
= @project.id
これではできなかったんです。
これができると信じきっていたので、時間がかかってしまいました。
今までwhereメソッドで取得していたのは複数の値でして、eachを回して配列から取り出していたので、
それと同じ感覚でできると思っていました。
解決方法
def show
@project = Project.where(id: 1).first
end
.firstをつけます!!!
whereで条件指定して持ってきた値は、そのままビューでは使えないみたいです。
なので.firstをつけて最初の値を取得して、それを@projetとしてあげれば、
ビューの方で、@project.idとした時に1と出てきます!
.firstをつけないでターミナルで@projectの中身を見てみると、
よくみると
=> [中身]
[]で囲まれてる!
.firstをつけると、
=> 中身
[]がない!
whereで取得した値は配列に入っているということなんでしょうか・・・
そのあたりはまた詳しく調べていこうと思います!
whereで取得した値が一つしかない場合は、気をつけてください。
以上です!
また一つ勉強になりました!
何か間違いや不適切な箇所などがあればコメントまでお願いします!