1

我正在使用Ruby on Rails 3,我想初始化我的課程。在我的情況下,每次使用該類時都需要設置params[:name] ||= {}如何使用Ruby on Rails初始化類以設置自定義參數值?

如何做到這一點?


更新我

是否有可能使用類似

class A 
    def initialize 
    params[:name] ||= {} 
    end 
end 

把事情簡單化?


UPDATE II

我忘了地說,在我的課我必須使用該參數作爲一個散列:

class A 
    def initialize 
    # code to initialize params[:name] ||= {} 
    end 

    def action_name 
    params[:name][:ronda] = "Jack" 
    end 
end 

如果我嘗試設置params[:name][:ronda]無inizialize params[:name] ||= {},我得到一個錯誤。爲此我必須初始化這個類。

我上面的代碼中,我可以做

def action_name 
    params[:name] ||= {} 
    params[:name][:ronda] = "Jack" 
    end 

,它會工作,但,因爲我必須使用在類的每一個動作,我想折射代碼設置params[:name]一次。

+0

你在找什麼不同於`def initialize`的東西嗎? – 2011-02-06 03:17:16

+0

我想不,但我根本不知道如何初始化課程。我在哪裏可以找到有關文件? – user502052 2011-02-06 03:19:01

回答

5

可以使用初始化函數設置默認值:

 
class A 
    def initialize 
    @params = {name: {}} 
    end 

    def params 
    @params 
    end 
end 

A.new.params # {:name => {}} 

您也可以默認在訪問時這樣說:

 
class A 
    def initialize 
    @params = {} 
    end 

    def params 
    @params[:name] ||= {} 
    @params 
    end 
end 

A.new.params # {:name => {}} 

不同的是,第一個例子中添加:名稱參數在創建時(A.new),而第二個例子在訪問時添加它(A.new.params)。

0

只是做

@params = { 
    :name => { 
     :ronda => {} 
    } 
} 

在初始化。

相關問題