前提
質問初投稿になります。
Rubyで過去問の学習システムを作っています。
問題をビューに表示させる機能を実装中に以下のエラーメッセージが発生しました。
実現したいこと
-
インスタンス変数へ格納した中間テーブル(多)のデータから質問が格納されているテーブル(子)のデータを取得しeach文で回して表示させたいのですがアソシエーションは組めていると思うのですが他のテーブルの情報を取得することができません。
-
QuestionテーブルとQuestionPaperテーブルは1対多の関係にありQuestionPaperテーブルはQuestionテーブルとPaperテーブルの中間テーブルの役割を果たしています。
class Paper < ApplicationRecord has_many :question_papers, dependent: :destroy has_many :questions, through: :question_papers, dependent: :destroy end
class Question < ApplicationRecord has_many :question_papers, dependent: :destroy has_many :papers, through: :question_papers, dependent: :destroy end
class QuestionPaper < ApplicationRecord belongs_to :paper belongs_to :question end
question_papers_controller
def show @question_papers = params[:question_papers].map do |question_paper| QuestionPaper.find(question_paper) end end
show.html.erb
<% @question_papers.each do |question_paper| %> <% # binding.pry %> <%= question_paper.question %> <% end %> <br> <%= link_to "戻る", year_questions_path %>
>> question_paper => [#<QuestionPaper id: 1305, paper_id: 72, question_id: 130, choice_number: nil, judge: nil, created_at: "2022-07-25 08:34:11.878460000 +0900", updated_at: "2022-07-25 08:34:11.878460000 +0900">]
どこから間違えているのかわからないためご助言いただけますと幸いです。よろしくお願いいたします。
発生している問題・エラーメッセージ
undefined method `question' for [#<QuestionPaper id: 1305, paper_id: 72, question_id: 130, choice_number: nil, judge: nil, created_at: "2022-07-25 08:34:11.878460000 +0900", updated_at: "2022-07-25 08:34:11.878460000 +0900">]:Array
該当のソースコード
Ruby, Ruby on Rails
試したこと
- アソシエーションにてスペルミスがないかの確認
- アソシエーションが組めてる上での記述
補足情報(FW/ツールのバージョンなど)
ruby '3.1.2'
rails, '~> 6.1.6'
0 コメント