1

私はRuby on Rails 3を使用しており、クラスを初期化したいと考えています。私の場合は、そのクラスを使用するたびにparams[:name] ||= {}を設定する必要があります。Ruby on Railsを使用してカスタムパラメータ値を設定するクラスを初期化するにはどうすればよいですか?

どうすればよいですか?


UPDATE I

それは

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

のようなものを使用して、物事を単純化することは可能ですか?


UPDATE II

は、私は私のクラスでは、私はハッシュとしてそのパラメータを使用する必要があると言うためにを忘れてしまった:私はせずにparams[:name][:ronda]を設定しようと

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

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

私はparams[:name] ||= {}をinizialize、私はエラーが発生します。このためには、クラスを初期化する必要があります。

私は上記のコード私は

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

を行うことができますし、それは動作しますが、を、私はクラス内のすべてのアクションのためにそれを使用する必要があるため、私は一度params[:name]を設定するコードを屈折したいと思います。あなたはデフォルトを設定する初期化関数を使用することができます

+0

あなたは 'def initialize'とは異なる何かをお探しですか? –

+0

私はいいと思いますが、クラスを初期化する方法は全くわかりません。どこでドキュメントを見つけることができますか? – user502052

+0

変数paramsを最初に初期化せずにparams [:name]を実行するだけではいけません。パンの答えはおそらくあなたが望むものに近いでしょう。 –

答えて

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

差が第1の例では、追加することにある:nameパラメータを(A.new)、2番目の例ではアクセス時に追加します(A.new.params)。

+0

私は質問を更新しました。 – user502052

+0

私の解決策はまだ適用されます。名前を設定する前に、paramsを{}に初期化する必要があります。クラスを初期化することは、その上で.newを呼び出すことと同じです。 –

+0

質問を再更新しました。 – user502052

0

だけ初期化中

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

を行います。

関連する問題