有没有一种方法可以干净利落地加载对象(不使用before_filter)。Rails 3 - 如何重构此控制器代码?
事实上,我需要@answer和@question以外的其他方法比“show”。
控制器:
def show
@answer = Answer.new pre_form
@question = Question.find(params[:id])
@answers = @question.answers.page(params[:page])
respond_with @question
end
private
def pre_form
session[:pre_form][:answer] || session[:pre_form][:question] if session[:pre_form]
end
在此先感谢
+1,强调'before_filter'是正确的路要走。 – coreyward 2011-05-06 16:51:59
我读过它被折旧,而不是通过筛选前设置实例变量的最佳实践。因为它是魔术,并且因为它是私有/受保护的,因此实例变量被隐藏。我错了吗 ? – invaino 2011-05-06 16:53:09
我想知道你在哪里阅读,因为我从来没有听说过这样的事情。 'before_filter'是控制器中的重要方法之一,并且由于各种原因很重要。有时候,文档标记方法的*实现*被弃用,因为它被移动到另一个模块,但该方法本身仍然有效。实例变量隐藏或保护的情况也不是这样,因为在Ruby中这是不可能的。如果定义了一个实例变量,它将被传递给视图上下文。 – tadman 2011-05-06 19:11:10