Railsコントローラー関数に渡すパラメーターを手動で作成しようとしています.paramsハッシュへのキーがコロンでリストされているのはなぜparams[:key]
ですかparams["key"]
?
2447 次
3 に答える
16
RailsはHashWithIndifferentAccess
、params
. は、同じ「値」のシンボルまたは文字列によるキー アクセスが同じハッシュ値を返すことを除いて、通常のHashWithIndifferentAccess
ハッシュと同じように動作します。例えば:
h = HashWithIndifferentAccess.new
h[:foo] = 'bar'
h[:foo] #=> "bar"
h['foo'] #=> "bar"
h['foo'] = 'BAR'
h[:foo] #=> "BAR"
対通常のハッシュ:
h = {}
h[:foo] = 'bar'
h[:foo] #=> "bar"
h['foo'] #=> nil
h['foo'] = 'BAR'
h[:foo] #=> "bar"
これにより、特定のキーが Symbol か String かを (良くも悪くも) 心配する必要がなくなります。
于 2013-01-27T21:31:03.133 に答える
0
ほとんどの場合、文字列 (引用符付き) と記号 (コロン付き) は、Rails のハッシュ キーとして交換されます。ハッシュ キーの記号は、定義済みの定数である場合は慣用的です。Ruby 1.9 には、キーの記号を含むハッシュを記述するための構文糖衣があります。
于 2013-01-27T21:44:46.360 に答える
0
ハッシュは、各シンボルのインスタンスが常に 1 つしかないため、シンボルをキーとして使用します。これにより、検索が容易になります。文字列を使用する場合、同じ文字列にすることはできないため、ハッシュを計算する必要があります (別のインスタンスですが、内容は同じです)。だからそれはそれをより速くします。アクティブなサポートHashWithIndifferentAccess
は、メソッドを使用してすべての文字列をシンボルにキャストします#to_sym
。
于 2013-01-27T21:33:11.553 に答える