1

这是一个与我之前发布的帖子相关的不断发展的问题......

我正在玩一些 - 试图了解/lib/Rails 中的目录是如何工作的 - 以及如何引用/lib/目录中定义的变量以在视图中使用。

我有一个名为的文件helloworld.rb,它保存/lib/hellotest/在 Rails 的一个目录中。

helloworld.rb文件具有以下代码:

module HelloWorld
  def hello
    @howdy = "Hello World!"
  end
end

我希望能够在名为 的视图上显示此方法的结果index.html.erb,因此我在文件中包含以下代码index_helper.erb

module IndexHelper
  require 'helloworld'
end

我了解到我需要在/config/application.rb文件中包含以下代码行:

config.autoload_paths += %W(#{Rails.root}/lib/hellotest/)

另外,我在视图中包含以下代码index.html.erb

<%= @howdy %>

我想我可能发现了一些导致问题的东西。我不想/lib/在启动时加载整个目录,所以我将文件放在一个名为/lib/hellotest/. 我读过 Rails 如何解释 lib 文件夹中的模块/类命名约定存在一些问题,但我不太明白。在第 2 点,我在William B Harding 的博客上看到了关于我的问题的可能解决方案的一个很好的资源- 但我不能完全理解这个解决方案,因为它与我的问题有关。

请问有什么建议吗?

我错过了什么?

4

1 回答 1

0

我建议除非您有充分的理由不这样做,否则请遵循模块和类的常规命名(如您提供的链接中所述)。重命名helloworld.rbhello_world.rb,将其移动到lib,然后将您的更改autoload_paths为:

 config.autoload_paths += %W(#{Rails.root}/lib/)

最后,在您的模块中更改require 'hello_world'为。然后它应该正常加载。require 'hello_world'IndexHelper

于 2012-11-06T22:28:02.720 回答