LoginSignup
2
3

More than 5 years have passed since last update.

【Ruby on Rails】 whereを使って条件指定した値の中身を取得できない時

Posted at

知ってる人にとっては当たり前のことかもしれないですが、
少しハマったので、僕と同じ初心者の人で、今後同じことで困ってる人を助けたい!!
ので、書き残しておきます!

やりたいこと

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の中身を見てみると、

スクリーンショット 2017-06-24 16.52.11.png

よくみると 

=> [中身]

[]で囲まれてる!

.firstをつけると、

スクリーンショット 2017-06-24 16.54.24.png

=> 中身

[]がない!

whereで取得した値は配列に入っているということなんでしょうか・・・

そのあたりはまた詳しく調べていこうと思います!

whereで取得した値が一つしかない場合は、気をつけてください。

以上です!

また一つ勉強になりました!

何か間違いや不適切な箇所などがあればコメントまでお願いします!

2
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3