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 => {} 
    } 
} 

在初始化。

相关问题