Rails:在控制器中加载帮助程序的最佳实践

时间:2017-02-06 18:09:55

标签: ruby-on-rails ruby oop

几天前我被聘用来更新Rails 4应用程序。一般来说,rspecs和代码看起来不错,但是在某个控制器的顶部找到了这一行:

std::vector::resize

在网上搜索,我发现该行是一种通过ActionView :: Base类的新实例从控制器内的助手加载方法的方法。我的意思是,这是一种方法,而不是经典:

 delegate :edit_app_path, :new_app_payment_path, to: :view_context

在控制器中。我的问题是:这真的是一个好习惯吗?是比较快的?如果我使用经典的“include MyHelper”,AFAIK, view_context 将加载一个新的类,其中包含 all 帮助程序和视图的所有上下文,而不是一个帮助程序。顺便说一下,:edit_app_path :new_app_payment_path 方法在同一个帮手中。

我应该删除该线路吗?

1 个答案:

答案 0 :(得分:1)

使用view_context允许控制器幸福地不知道路径的定义位置。如果将来重构辅助文件结构,控制器将继续哼唱而不需要更改。

性能方面,我怀疑影响会很大,因为所有代码都已加载。 Rails(和Ruby标准库)一直在创建新对象。