我正在構建一個應用程序,用戶可以從各種標準和問題中構建一個教程來教授標準,但是我不確定是否已經正確設置了所有內容或不。Rails multiple has_many:通過並顯示關聯
「新」頁面,用戶可以使用下拉菜單來排序穿過課控制器
def new
@search = Standard.search(params[:q])
@standards = @search.result
@lesson = Lesson.new
end
def create
@lesson = current_user.selects.build(params[:lesson])
if @lesson.save
redirect_to edit_lesson_path(@lesson)
else
render :action => 'new'
end
end
def edit
@lesson = Lesson.find(params[:id])
@standards = @lesson.standards
end
選擇標準,一旦標準被選擇,用戶會被重定向到「編輯」該頁面顯示了每個選定的標準,但這是我遇到麻煩的部分,我不確定我的模型是否設置正確。通過課程和標準之間的關係來選擇標準,並且通過課程和問題之間的關係來確定問題以及選擇與每個標準相關的問題。
我想列出每個與父標準下的標準相關的問題,我已經在'edit'方法中嘗試了@questions = @ standards.questions,但是調用了ActiveRecord的關係NoMethod錯誤。我也在控制器中嘗試了@questions = Question.where(:standard_id => @standards),但該頁面列出了每個標準下所有選定標準的所有問題。
我的教訓型號:
class Lesson < ActiveRecord::Base
attr_accessible :user_id, :name, :grade_id, :text_id, :date, :subject_id, :question_ids
has_many :select_standards
has_many :standards, through: :select_standards
has_many :select_questions
has_many :questions, through: :select_questions
end
標準模型:
class Standard < ActiveRecord::Base
attr_accessible :content, :grade_id, :subject_id
belongs_to :subject
belongs_to :grade
has_many :questions
end
問題型號:
class Question < ActiveRecord::Base
attr_accessible :content, :standard_id
belongs_to :standard
has_many :select_questions
has_many :lessons, through: :select_questions
end
Select_standards:
class Selection < ActiveRecord::Base
attr_accessible :lesson_id, :standard_id
belongs_to :lesson
belongs_to :standard
end
什麼是'select_standards'?你可以發佈模型定義嗎? – vee
Select_standards是課程和標準之間的連接模型,用於保存用戶的選擇。但我想我解決了我的問題!我在問題模型中添加了「委託:課程::to =>:standard,:allow_nil => true」,現在我可以調用@ lesson.questions。非常感謝你的幫助。 :) –