這是與以前的帖子我做了一個發展的問題...使用/ lib目錄/子目錄導軌 - 用於查看內容
我玩弄一些 - 嘗試學習如何/lib/
目錄Rails的作品 - 以及如何引用/lib/
目錄中定義的變量以在視圖中使用。
我有一個名爲helloworld.rb
文件,它保存在Rails中/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/hellotest/
子目錄加載整個/lib/
目錄。我讀過了Rails在lib文件夾中解釋模塊/類命名約定的一些問題,但我無法弄清楚。我看到關於這一可能的解決我的問題上William B Harding's Blog一個很好的資源,在2點 - 但我不能完全解決這個問題的解決方案我的懷裏,因爲它涉及到我的問題。
有什麼建議嗎?
我錯過了什麼?
使用你的建議 - 我覺得我越來越近了,但結果還是不要在視圖中。在實際的觀點中,我應該做些什麼不同的事情? – 2scottish
抱歉沒有注意到問題的一部分。首先,不要使用與文件內容不匹配的擴展名。您不應該使用.erb作爲帶有Ruby代碼的文件,它應該具有擴展名.rb。但實際上並不需要該文件,您可以直接在'ApplicationController'中包含'HelloWorld'模塊,然後添加一行'helper_method:hello',以使hello'方法在您的視圖中可用。 –
作爲參考,這裏是[helper_method'的文檔](http://apidock.com/rails/v3.2.8/AbstractController/Helpers/ClassMethods/helper_method)和相關的[SO問題/答案](http: //stackoverflow.com/questions/4455583/rails3-how-do-i-make-a-custom-helper-available-to-controllers-and-views)。 –