映画レビューアプリを作成中に気づいたことです!
レビュー投稿画面に移行時に
①Movieテーブル最新データ1つ取得→ fleshmovie = Movie.order(updated_at: :desc).limit(1)
②最新データidカラムの値をインスタンス変数に定義→ @movie = fleshmovie.id
reviews_controller.rb
def new
fleshmovie = Movie.order(updated_at: :desc).limit(1)
@movie = fleshmovie.id
end
error_code
[2] pry(#<ReviewsController>)> @movie
Movie Load (0.6ms) SELECT `movies`.* FROM `movies` ORDER BY `movies`.`updated_at` DESC LIMIT 1
↳ app/controllers/reviews_controller.rb:10
=> [#<Movie:0x00007fb5d5e845d0
id: 37,
mtdb_id: "10315",
created_at: Mon, 23 Dec 2019 11:08:37 UTC +00:00,
updated_at: Mon, 23 Dec 2019 11:08:37 UTC +00:00>]
[3] pry(#<ReviewsController>)> @movie.id
NoMethodError: undefined method `id' for #<Movie::ActiveRecord_Relation:0x00007fb5d6b6bd98>
Did you mean? ids
@movieで最新データは取得できているのに、idカラムが参照できない!
rails documentを確認
.orderは並び替えるメソッドなので、@movieは配列を取得している気がする
まず配列の1つめを取得する必要がありそう!
fleshmovie.id → fleshmovie[0].idで解決しました!
reviews_controller.rb
def new
fleshmovie = Movie.order(updated_at: :desc).limit(1)
@movie = fleshmovie[0].id
end