<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Synthesis: Hash - to_query</title>
    <link>http://synthesis.sbecker.net/articles/2007/01/24/hash-to_query</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>by Scott Becker</description>
    <item>
      <title>Hash - to_query</title>
      <description>&lt;p&gt;Look what just appeared in Rails trunk &amp;#8211; Hash#to_query &amp;#8211; turn a hash of values into a form-encoded query string. I&amp;#8217;ve wanted this on occasion in the past. Check it out:&lt;/p&gt;


	&lt;h4&gt;Simple Conversion&lt;/h4&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="punct"&gt;{&lt;/span&gt;&lt;span class="symbol"&gt;:a&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="number"&gt;10&lt;/span&gt;&lt;span class="punct"&gt;}.&lt;/span&gt;&lt;span class="ident"&gt;to_query&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

Becomes this:
&lt;pre&gt;
a=10
&lt;/pre&gt;

	&lt;h4&gt;Nested Conversion&lt;/h4&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="punct"&gt;{&lt;/span&gt;&lt;span class="symbol"&gt;:person&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt;&lt;span class="symbol"&gt;:name&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;Nicholas&lt;/span&gt;&lt;span class="punct"&gt;',&lt;/span&gt; &lt;span class="symbol"&gt;:login&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;seckar&lt;/span&gt;&lt;span class="punct"&gt;'}}.&lt;/span&gt;&lt;span class="ident"&gt;to_query&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

Becomes this:
&lt;pre&gt;
person[name]=Nicholas&amp;#38;person[login]=seckar
&lt;/pre&gt;

	&lt;h4&gt;Multiple Nested&lt;/h4&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="punct"&gt;{&lt;/span&gt;&lt;span class="symbol"&gt;:person&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt;&lt;span class="symbol"&gt;:id&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="number"&gt;10&lt;/span&gt;&lt;span class="punct"&gt;},&lt;/span&gt; &lt;span class="symbol"&gt;:account&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt;&lt;span class="symbol"&gt;:person&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt;&lt;span class="symbol"&gt;:id&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="number"&gt;20&lt;/span&gt;&lt;span class="punct"&gt;}}}.&lt;/span&gt;&lt;span class="ident"&gt;to_query&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

Becomes this:
&lt;pre&gt;
account[person][id]=20&amp;#38;person[id]=10
&lt;/pre&gt;

	&lt;h4&gt;Array Values&lt;/h4&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="punct"&gt;{&lt;/span&gt;&lt;span class="symbol"&gt;:person&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt;&lt;span class="symbol"&gt;:id&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="number"&gt;10&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="number"&gt;20&lt;/span&gt;&lt;span class="punct"&gt;]}}.&lt;/span&gt;&lt;span class="ident"&gt;to_query&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

Becomes this:
&lt;pre&gt;
person[id][]=10&amp;#38;person[id][]=20
&lt;/pre&gt;

	&lt;p&gt;You can do the same thing in Prototype:&lt;/p&gt;


&lt;pre&gt;
$H({ action: 'ship', order_id: 123, fees: ['f1', 'f2'], 'label': 'a demo' }).toQueryString();
&lt;/pre&gt;

Becomes this:
&lt;pre&gt;
'action=ship&amp;#38;order_id=123&amp;#38;fees=f1&amp;#38;fees=f2&amp;#38;label=a%20demo'
&lt;/pre&gt;

	&lt;p&gt;It doesn&amp;#8217;t look like Prototype handles the nested conversions yet though.&lt;/p&gt;</description>
      <pubDate>Wed, 24 Jan 2007 15:48:00 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:39b1002c-eb64-43d7-bacd-252d362ef541</guid>
      <author>sbecker</author>
      <link>http://synthesis.sbecker.net/articles/2007/01/24/hash-to_query</link>
      <category>Ruby on Rails</category>
      <category>Web Development</category>
    </item>
    <item>
      <title>"Hash - to_query" by quickredfox</title>
      <description>&lt;p&gt;OKie&amp;#8230;now how do we do the opposite?&lt;/p&gt;</description>
      <pubDate>Thu, 20 Nov 2008 13:20:32 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:772e1323-43ae-4009-a802-4fd6bb094785</guid>
      <link>http://synthesis.sbecker.net/articles/2007/01/24/hash-to_query#comment-7930</link>
    </item>
    <item>
      <title>"Hash - to_query" by Gavin Morrice</title>
      <description>&lt;p&gt;Hey Scott &amp;#8211; thanks for this tip.&lt;/p&gt;

&lt;p&gt;One question though:
How to you change the format of the query string produced to include the &amp;#8221;?&amp;#8221; prefix?&lt;/p&gt;
ie. 
&lt;pre&gt;
&lt;a href="http://www.mysite.com/users/1?name=bob"&gt;www.mysite.com/users/1?name=bob&lt;/a&gt;
&lt;/pre&gt;
instead of just
&lt;pre&gt;
&lt;a href="http://www.mysite.com/users/1name=bob"&gt;www.mysite.com/users/1name=bob&lt;/a&gt;
&lt;/pre&gt;
do I just concatenate a &amp;#8221;?&amp;#8221; in the link?
&lt;p&gt;thanks&lt;/p&gt;</description>
      <pubDate>Sun, 19 Oct 2008 04:45:23 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:319d732e-ac7b-4cb9-abc1-6f8ca5fceb33</guid>
      <link>http://synthesis.sbecker.net/articles/2007/01/24/hash-to_query#comment-7917</link>
    </item>
  </channel>
</rss>
