1

ローカル変数のように、 'params'ハッシュから個々のキーと値のペアにアクセスする必要があることがよくあります。paramsハッシュから値にアクセスするための省略形

私は、毎回 'params'を書く代わりにローカル変数を使用すると、わかりやすいコードになります。

ので、代わりの私のような何かをするだろうparams[:first_variable]のような値を使用して:

first_var = params[:first_variable] 

second_var = params[:second_variable] 
... 

と私のプログラムでは、私が代わりにparams[:first_var]毎回書くのこの短い表記を使用します。

この問題は、paramsに多数の値があると、関数のサイズが大幅に大きくなることがあるという問題があります。

「params」のオブジェクトを自分の関数のローカル変数として参照する方が良いでしょうか?

+0

これをいくつかのコードで説明できますか?コントローラはファンキーな作業をするべきではありません。通常、パラメータハッシュを取得してそれを他の人に渡すだけです。コントローラには多くのローカル変数を定義する必要はありません。それがやることよりもはるかに多くをしています。 –

+0

http://www.stephenchu.com/2008/03/paramfu-1-wrap-all-revantvant-attributes.html – Sector

+0

これにより、コードを誰かに完全に説明しなくてもわかりやすくなるとは思わないあなたのプロジェクトに参加しますか?しかし、これはちょうど謙虚な意見です。 –

答えて

2

method_missingを定義し直してください。あなたがそうするなら、method_missingの基本ルールを覚えておいてください - あなたがそれを処理できないなら、それを(へ)通話してください。 respond_to?を並行して更新します。

これはおそらく、このようなものです。

class Foo 
    def method_missing(name, *args, &block) 
    if params.include? name 
     params[:name] 
    else 
     super 
    end 
    end 

    def respond_to?(name) 
    if params.include? name 
     true 
    else 
     super 
    end 
    end 
end 

ので、どちらかだけで独自のクラス、またはエイリアス既存のバージョンを上にそれを再定義し、処理していないときsuperするのではなく、それを呼び出して、Railsはすでにmethod_missingを多用していることを覚えておいてください。

+2

+1しかし、パラメータの変数名によっては危険かもしれません – apneadiving

+0

しないでください。 PHPのregister_globalからうまく学んだことはありませんか? http://www.php.net/manual/en/ini.core.php#ini.register-globals – remino

関連する問題