我正在关注 Kevin Skoglund 教程 Ruby on Rails 3 Essential Training,它是为 rails 3.0 编写的,尽管我目前使用的是 3.2。它在 pages_controller 中使用以下方法和 before_filter 来仅显示属于父主题的页面。
本教程明确使用 .find_by_id 因为如果结果为 nil 它“不会返回错误”。但是,在尝试查看 @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 中实现此功能的正确方法是什么?