Estoy siguiendo el tutorial de Kevin Skoglund Ruby on Rails 3 Essential Training, que fue escrito para Rails 3.0, aunque actualmente estoy usando 3.2. Utiliza el siguiente método en el pages_controller con un before_filter para mostrar solo las páginas que pertenecen al tema principal.Rails 3.0/3.2: Id llamada para nil, que sería erróneamente 4 - si realmente deseaba el id de nil, use object_id
El tutorial usa explícitamente .find_by_id porque si el resultado es nulo, "no devolverá un error". Sin embargo, obtengo el "Id. Llamado para nulo", que erróneamente sería 4, si realmente deseaba el error "Id of nil, use object_id" cuando intenta ver una página donde @subject se ha establecido en nil.
def find_subject
if params[:subject_id]
@subject = Subject.find_by_id(params[:subject_id])
end
end
El código real que está causando el error es:
def list
@pages = Page.order("pages.position ASC").where(:subject_id => @subject.id)
end
Es esto algo que ha cambiado desde 3.0? Si es así, ¿cuál sería la forma correcta de implementar esta funcionalidad en 3.2?
actualizó la pregunta con el código que muestra el error – Nick5a1