Я слежу за учебным пособием Кевина Скоглунда Ruby on Rails 3 Essential Training, который был написан для rails 3.0, хотя в настоящее время я использую 3.2. Он использует следующий метод в page_controller с параметром before_filter для отображения только страниц, принадлежащих родительскому объекту.
В учебнике явно используется .find_by_id, потому что если результат равен нулю, он "не вернет ошибку". Однако я получаю "Called id for no", который по ошибке был бы 4, если вам действительно нужен идентификатор id nil, используйте object_id "при попытке просмотреть страницу, где @subject был установлен на nil.
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?