【发布时间】: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