2011-03-06 64 views
1

我只是遇到類似http://www.ruby-forum.com/topic/216433的Rails 3和控制器實例變量裏面一個助手

一個問題,我需要從助手來訪問控制器實例變量。

這是我所做的代碼,它不工作。

控制器:

class ApplicationController < ActionController::Base 
    helper_method :set_background_type #for action only background setting 

    #for controller-wise background setting 
    def set_background_type(string) 
    @background_type = string 
    end 
end 

助手:

module ApplicationHelper 

    def background_type 
    @background_type || 'default' 
    end 

end 

佈局:

<body class="<%= background_type %>"> 

回答

3

經過一番搜索。我從

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

得到一個溶液和控制器變成:

class ApplicationController < ActionController::Base 
    helper_method :set_background_type #for action only background setting 
    helper_attr :background_type 
    attr_accessor :background_type 

    #for controller-wise background setting 
    def set_background_type(string) 
    @background_type = string 
    end 

    def background_type 
    @background_type || 'default' 
    end 
end 

並刪除從ApplicationHelper方法。 它適用於這種情況下,但我仍然好奇,

有沒有辦法訪問ApplicationHelper中的方法的控制器實例變量?

0

如果您正在使用ERB模板,我猜你是,那麼你需要使用erb語法來調用輔助方法。您是否嘗試過:

<body class="<%= background_type %>"> 

+0

感謝您的回答。但實際上我使用haml,我給出的視圖示例只是爲了演示場景。我會解決這個問題的,thanx。 – StackNG

+0

很酷。很高興你明白了! –

相關問題