如何在 Rails 模块中定义辅助方法?

Posted

技术标签:

【中文标题】如何在 Rails 模块中定义辅助方法?【英文标题】:How do I define a helper method in my Rails module? 【发布时间】:2016-11-25 09:54:07 【问题描述】:

我使用的是 Rails 4.2.4。如何在模块中定义辅助(私有)方法?我有这个模块

module WebpageHelper

  def get_url(url)
    content = get_content(url)
    ..
  end

  def get_content(url)
    …
  end

  module_function :get_url

end

我不希望方法“get_content”可以公开访问,但是使用上面的代码我得到了错误

Error during processing: undefined method `get_content' for WebpageHelper:Module

如何在我的模块中正确定义私有辅助方法?

【问题讨论】:

【参考方案1】:

我认为最好的方法(主要是现有库的编写方式)通过在模块中创建一个处理所有逻辑的类来做到这一点,并且模块只是提供了一种方便的方法。

文档在这里;

Private method

或查看Here 获取一些不错的示例,例如class << self 选项。

【讨论】:

我在这里需要一个代码示例,因为如果我没看错的话,你是说使用辅助方法创建一个类,这将使该方法可以公开访问,这正是我的我尽量避免。此方法将仅在本模块中使用。 那么这个内部类的方法只能在模块本身内部访问?

以上是关于如何在 Rails 模块中定义辅助方法?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Rails 中找到方法来自的模块/类?

如何在Rails中正确使用控制器助手模块,以及如何在这些助手之间建立连接?

使用 RSpec 测试 Rails 辅助方法时如何在参数哈希中设置值?

如何在 Ruby on Rails 的控制台中调用控制器/视图辅助方法?

如何测试作为 helper_method 公开的 Rails 控制器方法?

Rails:重构 HTML 生成辅助方法以使用部分 - 如何在那里使用块?