我目前有两种模式School
,Course
其中学校has_many
课程和课程belongs_to
学校。此外,School 和 Course 是嵌套资源,其中 School 是父资源,Course 是子资源。
我在 Rails 控制台中创建了几条测试记录,以便与诸如孩子何时调用父母Course.first.school
成功执行并返回学校的所有相关信息等查询Course.first
相关联。
但是,当放入控制器函数时,我会在以下行中收到错误“nil:NilClass 的未定义方法‘学校’”:
redirect_to school_course_path(@course.school, @course)
..好像该.school
部分未被识别(在控制台中的位置)。为什么会这样,我该如何克服这个错误?谢谢!
编辑 - 正如建议的那样,可能是我的 @course 实例变量没有在控制器中的方法之间传递。我试图通过私有方法传递它们,但它仍然给我同样的错误。这是我的代码(背景:模型Question
belongs_to Course
,Course
有很多问题。课程不是嵌套路线的一部分)
class QuestionsController < ApplicationController
def new
@course = Course.find(params[:course]) #confirmed working
self.current_course = @course #I attempt to set current_course, a private method
@question = Question.new
end
def create
@question = Question.new(params[:question]) #also works, in rails console all the questions confirms to have rails id
if @question.save
redirect_to school_course_path(current_course.school, current_course) #source of my frustrations - continues to returns same error message
else
render 'new'
end
end
private
def current_course=(course)
@current_school = course
end
def current_course
@current_course
end
end