私は現在3.2を使用していますが、Rails 3.0用に書かれたKevin SkoglundのチュートリアルRuby on Rails 3 Essential Trainingに従っています。親サブジェクトに属するページのみを表示するために、before_filter を使用して pages_controller で次のメソッドを使用します。
結果が nil の場合、「エラーを返さない」ため、チュートリアルでは明示的に .find_by_id を使用します。ただし、@subject が nil に設定されているページを表示しようとすると、「nil の呼び出された ID、誤って 4 になります。本当に nil の ID が必要な場合は、object_id を使用してください」というエラーが表示されます。
def find_subject
if params[:subject_id]
@subject = Subject.find_by_id(params[:subject_id])
end
end
エラーの原因となっている実際のコードは次のとおりです。
def list
@pages = Page.order("pages.position ASC").where(:subject_id => @subject.id)
end
これは3.0以降に変更されたものですか?もしそうなら、3.2 でこの機能を実装する正しい方法は何でしょうか?