0

任意のキーを持つハッシュがあります:

{'GET': [1,2,3]}

また

{'POST': ['my data 0', 'my data 1']}

ハッシュは、リクエスト本文で送信されるJSONから生成されます。キーは1つだけです。つまり、1つ以外のキーは無視します。

それがどのキーであるかを知りたいのですが、これは私が書いたコードです。

items = data['GET'] || data['get'] || data['POST'] || data['post']

これはきれいに見えません。処理したいキーの数が増えると、式が長くなります。短くしたい。私はRubyを初めて使用しますが、もっと良い方法はありますか?

4

3 に答える 3

1

次のように、最初の値を取得できます(1つしかない場合)。

item = data.values.first
于 2012-11-21T22:11:40.293 に答える
1

Hash#values_atメソッドを使用できます。

http://www.ruby-doc.org/core-1.9.3/Hash.html#method-i-values_at

data.values_at('GET','get', 'POST','post').first
于 2012-11-21T22:40:08.300 に答える
1

大きくなる可能性があると思われる場合は、データ内でのそのメソッドの検出からHTTPメソッドを分離することをお勧めします。

methods = [:get, :post]

def find_method(data)
  keys = methods.map{|m| [m.to_s.upcase, m.to_s]}.flatten
  data.values_at(keys).first
end
于 2012-11-21T22:47:59.890 に答える