簡體   English   中英

ruby on rails在助手與控制器中的應用范圍廣泛的方法?

[英]ruby on rails application wide method in helper vs. controller?

我有幾個變量,我希望所有控制器訪問。 所以我在application_controller.rb中定義了它們:

      before_filter :initialize_vars

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

沒有問題。 我想用徽標做類似的事情,所以我創建了另一個用before_filter調用的方法。

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

徽標img的一個實例應鏈接到站點根目錄,因此我調用它:

<%=h link_to logo, root_path %>

但它在我的布局中不起作用! 當我將我的logo方法添加到application_helper.rb時,一切都很完美。 hhmmm。

什么/適合這些東西的適當位置? 我的意思是因為我能夠使它工作不正確!

我應該在application_controller中定義我的實例變量(我將其視為全局變量)和我幫助器中的logo方法,就像我已經完成的那樣? 我覺得我在這里缺少一些基本的理解,為什么他們需要去不同的地方。 我不確定我是否正在調用“徽標”方法或者我正在使用它。 我將使用我如何調用以及如何編寫徽標方法,因為我覺得這兩種方法都應該放在application_controller中。

想法?

謝謝!

與渲染視圖相關的函數放在輔助文件中。 它們通常生成HTML內容。 如果在許多地方在應用程序中使用輔助方法,請將它們放在application_helper.rb ,否則必須將它們放在相應的幫助文件中。

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

Helper方法用於與視圖相關的方法,因為它是使用幫助器方法的視圖。 您看起來的實例變量應該重構為利用content_for然后在主布局文件中生成它們的方法。

http://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html#method-i-content_for

http://railscasts.com/episodes/8-layouts-and-content-for

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM