前提・実現したいこと
現在ruby on railsを用いてホラー映画のレビューサイトを作成している最中です。
htmlはhamlに変換して使用しています。
ログインしたユーザーが作品ごとに「イイね」をできるように設定し、
そのイイね数ごとにランキング順に設定しようと試み、
データベースに保存されている映画全てをランキング順に並べられるのですが、
映画ごとにジャンルを設けていまして、そのジャンルごとのランキングを表示させる事に苦労しております。
viewのindex
ruby
1.main 2 .main__total 3 総合映画ランキング 4 .main__content 5 - @post.first(5).each do |post| 6 = link_to post_path(post.id) do 7 .main__content__each 8 = image_tag post.images[0][:pic] 9 = post.title 10 .main__zombie 11 ゾンビ映画ランキング 12 .main__content 13 - @post.first(5).each do |post| 14 .main__content__each 15 = image_tag post.images[0][:pic] 16 = post.title
と現在は記述しております。
ゾンビ映画ランキングのeach文の
- @post.first(5).each do |post|
のeach文のところを
@zombie
のようにしてコントローラーでゾンビ映画のみが取り出せるように定義してあげればイイのかと思い、
該当のコントローラー
ruby
1 def index 2 @post = Post.includes(:images).order("likes_count DESC") 3 # @zombie = @post.where(genre: 'ゾンビ') 4 # @zombie = Post.find_by(genres: [1]) 5 # @zombie = @post.post_genres[1] 6 # @zombie = @post.genres 7 # @zombie = Post.genres 8 # @zombie = Genre.includes(:posts).where(id: 1) 9 # binding.pry 10 @genre = Genre.all 11 end
のようにいろいろ試したのですが、
上手くできずどのような記述をすればよろしいと思われますでしょうか?
データベースは
映画の詳細を記述しているpostsテーブル
https://gyazo.com/418835f50bacc757906a8cd96f6cfbff
映画のジャンルを記述しているgenresテーブル
https://gyazo.com/17b2559e5c4cf24106b123e0f535e092
その中間テーブルに当たるpost_genresテーブル
https://gyazo.com/f68bc1a583b8433e752cd20c04993db1
映画の画像を保存しているimagesテーブルがございます。
https://gyazo.com/54e6b9135e5e90e778c5a6f30b7fb3cb
postsテーブルのidが6〜10が全てgenresテーブルのidが1のゾンビと結びついている
のでこれらを出したいと思っています。
アソシエーションについては下記の通り記述しています。
post.rb
ruby
1class Post < ApplicationRecord 2 has_many :images 3 has_many :genres, through: :post_genres 4 has_many :post_genres 5end 6
post_genre.rb
ruby
1class PostGenre < ApplicationRecord 2 belongs_to :post 3 belongs_to :genre 4end 5
genre.rb
ruby
1class Genre < ApplicationRecord 2 has_many :posts, through: :post_genres 3 has_many :post_genres 4end 5
どうぞよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/04 04:23