1

これは、私が作成した以前の投稿に関連する進化中の問題です...

/lib/Railsのディレクトリがどのように機能するか、およびビューで使用するためにディレクトリで定義された変数を参照する方法を学ぶために、いくつか遊ん/lib/でいます。

というファイルがあり、Railshelloworld.rbのディレクトリに保存されています。/lib/hellotest/

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フォルダー内のモジュール/クラスの命名規則を解釈する方法にいくつかの問題があることを読みましたが、よくわかりません。William B Harding のブログのポイント 2 で、私の問題に対するこの可能な解決策に関する優れたリソースを参照していますが、この解決策は私の問題に関連しているため、この解決策をうまく理解できません。

アドバイスをお願いします。

私は何が欠けていますか?

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 に答える