将application_helper排除在外

时间:2010-07-18 02:15:43

标签: ruby-on-rails

在我最新的Rails应用程序中,我决定只使用辅助方法渲染部分内容。

例如,在application_helper.rb

def render_header
     render :partial => "partials/header"
end

我正在这样做以使我的代码更加干燥,以防我重命名部分或需要添加额外的逻辑来控制显示哪个部分。

这样做的一个缺点就是它会迅速膨胀application_helper.rb,它已经非常快速地膨胀而不会这样做。

我想知道分解application_helper的最简洁方法是什么。我想我应该在lib /中创建一个application_helpers库,并为我想要的每种类型的助手包含一个不同的模块,例如partial_helper.rb。

然而,我无法让它发挥作用。我将文件放在lib / application_helpers / partial_helper.rb中,然后调用模块“ApplicationHelpers :: PartialHelper”。我认为这会被Rails自动加载,而在我的视图中我可以做“PartialHelper.render_header”,但是我得到一个错误,即该方法在PartialHelper上未定义。

另一个想法是在application_helper.rb中包含/需要帮助器,并在我的视图中正常调用它,但这也不起作用。

任何想法/解决方案?

谢谢, 扎克

1 个答案:

答案 0 :(得分:4)

您可以在<whatever>_helper.rb中放置任何app/helpers文件,Rails会将其取出。例如,您可以拥有partials_helper.rb。您不限于由控制器生成的应用程序帮助程序或帮助程序。

示例partials_helper.rb

module PartialsHelper
  def render_header
    ...
  end
end