我完成了' Rails最佳实践' Code School的1级课程,它引入了最佳实践,实例变量不应该被隐藏。
因此,不是使用before_action,而是保持参数的运行更好,如下所示:
def edit
@tweet = get_tweet(params[:id])
end
def update
@tweet = get_tweet(params[:id])
end
private
def get_tweet(tweet_id)
Tweet.find(tweet_id)
end
有人可以解释为什么它比使用before_action更好吗?我无法理解。
感谢。
答案 0 :(得分:2)
表达的想法似乎是增加实例变量可见性,因此人们不会忘记有一些具有特定名称的浮动。这些可以在项目增长时起到重要作用,并且最终使用多个/嵌套/部分视图,因为变量名称可能会开始冲突。
但更好的机制是完全取消实例变量并改为使用局部变量。那样:
参考:
答案 1 :(得分:1)
我只是观看了视频,Gregg正在做什么:refactoring
并制作get_tweet private
它允许您在控制器之间共享公共代码,并进一步防止Rails将其作为控制器上的公共操作。但在处理before_filter
,Authorization
和Logging
时,使用Wizard
过滤器操作是很自然的。我希望这有帮助!!