【问题标题】:Rails: best practice to load a helper in controllerRails:在控制器中加载帮助程序的最佳实践
【发布时间】:2017-02-06 18:09:55
【问题描述】:

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

 delegate :edit_app_path, :new_app_payment_path, to: :view_context

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

include MyHelper 

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

我应该删除线吗?

【问题讨论】:

  • 看来你的猜测是错误的。 edit_app_path 真的是帮手吗?它看起来像路由方法,应该在控制器中可用而不做任何事情。
  • @SergioTulentsev,是的,是动态路由,因为某些路由是在读取表的行时创建的。助手执行以下操作: send("new_#{@agency.slug}_app_payment_path", application) 但这是另一个问题 ;-)
  • 如果你include MyHelper能用吗?

标签: ruby-on-rails ruby oop


【解决方案1】:

使用view_context 允许控制器完全不知道路径的定义位置。如果将来重构帮助文件结构,控制器将继续嗡嗡作响而无需更改。

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

【讨论】:

    猜你喜欢
    • 2010-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    • 2011-11-27
    • 1970-01-01
    相关资源
    最近更新 更多