【发布时间】:2014-06-06 16:04:23
【问题描述】:
您如何在 Rails 中组织不同类型的帮助代码?或者,更一般地说,我是否应该只在特定模型/视图/控制器的主文件之外拥有视图助手?
我的意思是:我加入了一个开发大型 Rails 应用程序的团队。据我所知,app/helpers 中的所有文件都是视图助手,可以通过add_template_helper(HelperName) 或helper :helper_name 包含在控制器和邮件程序中。
但是想象一下这种情况 - 您想将一个大邮件分成几个较小的邮件。在大型邮件程序中,您定义了几个帮助方法。现在您还想在新的邮件程序中访问这些辅助方法。
你是怎么做的?
您是否应该创建一个新模块/文件,将其放在app/helpers 下,然后通过include HelperName 使用它,还是有其他约定?
我还没有偶然发现这一点,但我想可能还有一些模型助手,我想在几个模型之间共享,所以我也想知道如何组织它们。
编辑:经过阅读后,我意识到仅在控制器或邮件程序中包含一个方法会引入此方法成为控制器/邮件程序操作的问题。所以我想这也是一个更普遍的 Ruby 问题——如何在多个类之间共享方法,同时保持这些方法的私有性。如果类 A、B 和 C 必须具有方法 foo,我是在 A、B 和 C 的类定义中将其声明为私有方法 3 次,还是可以在模块中定义它,将模块包含在类 A 中, B 和 C,但又要保密?
【问题讨论】:
-
不确定,但是,您可能需要api.rubyonrails.org/classes/ActiveSupport/Concern.html 吗?关于这个问题,模块中的私有方法在类中也相同。
标签: ruby-on-rails ruby helpers code-organization view-helpers