2011-08-23 26 views
4

我有幾個變量,我想所有的控制器訪問。所以我在我的application_controller.rb中定義了它們:在助手與控制器上應用程序泛方法上的紅寶石?

 before_filter :initialize_vars 

    def initialize_vars 
    @siteTitle = "my title" 
    @companyName = "company"  
    end 

那裏沒問題。 我想做一些與logo相似的東西,所以我創建了另一個用before_filter調用的方法。標誌IMG的

def logo 
    image_tag("Logo.jpg", :alt => "Logo") 
    end 

一個實例應該鏈接到網站根目錄所以我把它叫做:

<%=h link_to logo, root_path %> 

但它並沒有在我的佈局工作!當我將我的徽標方法添加到application_helper.rb時,一切正常。 hhmmm。

什麼/哪裏是適合所有這些東西的地方?我的意思只是因爲我能夠使它工作並沒有把它做對!

我應該像application_controller一樣定義我的實例變量(我像全局變量一樣對待)和我的幫助器中的logo方法嗎?我覺得我在這裏錯過了一些基本的理解,他們爲什麼需要去不同的地方。我不確定這是如何調用「標誌」方法或我要放在哪裏。我要扮演我打電話的方式,以及我如何編寫logo方法,因爲我覺得這兩種方法都應該放在application_controller中。

想法?

謝謝!

回答

7

使用有關渲染視圖功能被放置在幫助文件。 他們通常會生成HTML內容。如果在很多地方跨應用程序使用幫助程序方法,請將它們放在application_helper.rb中,否則它們必須放置在相應的幫助程序文件中。

由於您擁有的實例變量將在許多控制器中訪問,因此您可以像在應用程序控制器中那樣初始化它們。