私は現在2つのモデルを持ってSchool
おりCourse
、学校has_many
のコースとコースbelongs_to
の学校があります。さらに、SchoolとCourseはネストされたリソースであり、Schoolは親リソースであり、Courseは子です。
Rails Consoleでいくつかのテストレコードを作成したので、子供が親を呼び出したときなどのクエリが正常に実行され、学校のすべての関連情報が関連付けられてCourse.first.school
返されます。Course.first
ただし、コントローラー関数に入れると、代わりに次の行で「undefined method `school'for 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