我正在构建一个应用程序,用户可以在其中从各种标准和问题中构建课程以教授标准,但我不确定我是否正确设置了所有内容。
“新”页面允许用户使用下拉菜单进行排序,以通过课程控制器选择标准
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
选择标准后,用户将被重定向到显示每个选定标准的“编辑”页面,但这是我遇到问题的部分,我不确定我的模型设置是否正确。课程和标准之间存在 has_many through 关系以选择标准,课程和问题之间也存在 has_many through 关系以选择与每个标准关联的问题。
我试图列出与父标准下的标准相关的每个问题,我在“编辑”方法中尝试了@questions = @standards.questions,但调用了 ActiveRecord Relation 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
选择标准:
class Selection < ActiveRecord::Base
attr_accessible :lesson_id, :standard_id
belongs_to :lesson
belongs_to :standard
end