2014-01-31 103 views
3

我在Rails中編寫了一個應用程序,它的增長很快,我學習它。但我不明白幫手。Rails 4中的助手4

application_helper.rb

module ApplicationHelper 
    # This file it's empty 
end 

users_helper.rb

module UsersHelper 

    def avatar 
     # Do something 
    end 
end 

customer_helper.rb

module CustomerHelper 
    # This file it's empty 
end 

爲什麼在任何客戶的視圖可以調用用戶的輔助模塊上的虛擬形象的輔助方法? 那麼,爲什麼在許多文件中分開助手呢?

在此先感謝。

P.S:Rails的版本4

+0

你確定你的users_helper是這樣定義的:'module ApplicationHelper'?如果是這樣,那麼你已經在'ApplicationHelper'模塊中定義了頭像方法,這就是它的工作原理。 – Surya

+0

對不起,這是寫錯例子的錯誤。 –

+0

我假設你寫錯了問題? users_helper有:'UsersHelper',對吧? – Surya

回答

6

因爲所有的助手都包含在所有控制器,默認情況下。單獨的文件實際上只是爲了在這種情況下進行邏輯分離。您可以更改該行爲:

默認情況下,每個控制器將包含所有幫助程序。

在Rails的先前版本的控制器將包括一個輔助 ,其名稱相匹配的是,控制器的,例如,將myController的自動 包括MyHelper。返回舊的行爲集 config.action_controller.include_all_helpersfalse

http://api.rubyonrails.org/classes/ActionController/Helpers.html

+0

是否有一個特定的原因,他們爲什麼會默認包含所有助手?似乎沒有必要。對於包括所有人而言,是否會對性能產生負面影響,而不是僅在每個控制器中包含您需要的幫助者? – WhyAyala

0

爲了增加麥克·坎貝爾的回答是:


框架

魔術,因爲它是,Rails是一組文件,這是所謂的 按順序

這些文件包含classes,methods等;但他們仍然是文件。 這意味着,當您運行通過Rails的一個動作,它加載了 一系列其他dependent文件,以幫助它運行(這是一個 框架是什麼)

導軌的設計是這樣的,你helper方法全部 每次運行時都會加載一個動作。我不知道爲什麼,但它有助於 轄爲您的應用程序的不同區域的方法

因此,要回答你的問題,還有就是爲什麼傭工分頭行動,至少使用Rails沒有真正的理由4