1. ホーム
  2. ruby-on-rails

[解決済み] Ruby on Railsで文字列をクエリ文字列のようにパースする。

2023-05-13 01:03:35

質問

このような文字列があります。

"foo=bar&bar=foo&hello=hi"

Ruby on Railsはこれをクエリ文字列のようにパースするメソッドを提供しているので、このようなハッシュを得ることができるのでしょうか。

{
    :foo => "bar",
    :bar => "foo",
    :hello => "hi"
}

それとも自分で書かなければならないのでしょうか?

編集

上記の文字列は、URLからの実際のクエリ文字列ではなく、Facebook ConnectのCookieに格納された文字列であることに注意してください。

どのように解決するのですか?

答えは、使用しているRailsのバージョンに依存します。2.3以降を使用している場合は、Rackに組み込まれているparamsのパーサーを使用します。

 Rack::Utils.parse_nested_query("a=2") #=> {"a" => "2"}

古いRailsを使用している場合、確かに CGI::parse . ハッシュや配列の扱いはモジュールによって微妙に異なるので、取得するデータが選択した方法で正しいかどうかを確認する必要があることに注意してください。

を含めることもできます。 Rack::Utils をクラスに追加することもできます。