<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,6 +1,8 @@
 &lt;form action=&quot;#/pretend/post/url&quot; method=&quot;post&quot;&gt;
   &lt;p&gt;&lt;label for=&quot;name&quot;&gt;Name:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;name&quot; /&gt;&lt;/p&gt;
   &lt;p&gt;&lt;label for=&quot;email&quot;&gt;Email:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;email&quot; /&gt;&lt;/p&gt;
+  &lt;p&gt;&lt;label for=&quot;role_admin&quot;&gt;Admin?&lt;/label&gt;&lt;input type=&quot;checkbox&quot; name=&quot;roles[]&quot; value=&quot;admin&quot; id=&quot;role_admin&quot;/&gt;&lt;/p&gt;
+  &lt;p&gt;&lt;label for=&quot;role_author&quot;&gt;Author?&lt;/label&gt;&lt;input type=&quot;checkbox&quot; name=&quot;roles[]&quot; value=&quot;author&quot; id=&quot;role_author&quot;/&gt;&lt;/p&gt;
   &lt;p&gt;&lt;input type=&quot;submit&quot; value=&quot;Post!&quot; /&gt;&lt;/p&gt;
 &lt;/form&gt;
 </diff>
      <filename>examples/form_handling/files/form.html</filename>
    </modified>
    <modified>
      <diff>@@ -148,7 +148,7 @@
       });
       return &quot;Sammy.Object: {&quot; + s.join(',') + &quot;}&quot;; 
     }
-  });
+  });  
   
   // == Sammy.Application
   //
@@ -664,8 +664,16 @@
       path  = $form.attr('action');
       verb  = $form.attr('method').toString().toLowerCase();
       params = {'$form': $form};
-      $form.find(':input[type!=submit]').each(function() {
-        params[$(this).attr('name')] = $(this).val();
+      $.each($form.serializeArray(), function(i, field) {
+        if (params[field.name]) {
+          if ($.isArray(params[field.name])) {
+            params[field.name].push(field.value);
+          } else {
+            params[field.name] = [params[field.name], field.value];
+          }
+        } else {
+          params[field.name] = field.value;
+        }
       });
       try { // catch 404s
         returned = this.runRoute(verb, path, params);</diff>
      <filename>lib/sammy.js</filename>
    </modified>
    <modified>
      <diff>@@ -25,6 +25,8 @@
       &lt;div id=&quot;test_area&quot;&gt;&lt;/div&gt;
       &lt;form id=&quot;test_form&quot; action=&quot;#/test&quot; method=&quot;post&quot;&gt;
         &lt;input type=&quot;hidden&quot; name=&quot;test_input&quot; value=&quot;TEST&quot; /&gt;
+        &lt;input type=&quot;checkbox&quot; name=&quot;check[]&quot; value=&quot;TEST 1&quot; checked=&quot;checked&quot; /&gt;
+        &lt;input type=&quot;checkbox&quot; name=&quot;check[]&quot; value=&quot;TEST 2&quot; checked=&quot;checked&quot; /&gt;
       &lt;/form&gt;
     &lt;/div&gt;
     &lt;ol id=&quot;tests&quot;&gt;&lt;/ol&gt;</diff>
      <filename>test/sammy.html</filename>
    </modified>
    <modified>
      <diff>@@ -178,6 +178,7 @@
           
             this.route('post', /test/, function() {
               this.app.form_was_run = 'YES';
+              this.app.form_params = this.params;
               return false;
             });
           
@@ -207,12 +208,22 @@
       .should('bind events to all forms', function() {
         var app = this.app;
         app.run('#/');
-        // $('form').submit();
-        // matches(/sammy-app/, $('form')[0].className);
-        // soon(function() {
-        //   equals(app.form_was_run, 'YES');
-        //   app.unload();
-        // }, this, 1, 2);
+        $('form').submit();
+        matches(/sammy-app/, $('form')[0].className);
+        soon(function() {
+          equals(app.form_was_run, 'YES');
+          app.unload();
+        }, this, 1, 2);
+      })
+      .should('parse params for forms', function() {
+        var app = this.app;
+        app.run('#/');
+        $('form').submit();
+        soon(function() {
+          ok(app.form_params);
+          isObj(app.form_params['check[]'], ['TEST 1', 'TEST 2']);
+          app.unload();
+        }, this, 1, 2);
       })
       .should('trigger routes on URL change', function() {
         var app = this.app;</diff>
      <filename>test/test_sammy_application.js</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>91715999c339c041671b3e0e6380d10ac87e8d10</id>
    </parent>
  </parents>
  <author>
    <name>Aaron Quint</name>
    <email>aaronquint@tie-fighter.local</email>
  </author>
  <url>http://github.com/quirkey/sammy/commit/c78e130cc02448fe009c7ce969e5b4ffd6fa6684</url>
  <id>c78e130cc02448fe009c7ce969e5b4ffd6fa6684</id>
  <committed-date>2009-09-26T13:11:09-07:00</committed-date>
  <authored-date>2009-09-26T13:11:09-07:00</authored-date>
  <message>Fixed params parsing for form submission.

First, use $.fn.serializeArray() to get the form values, then parse them correctly, so that if two inputs have the same name attribute they're returned as an array</message>
  <tree>ad24d72db62f23436ea8b96b3e8c2089330b5145</tree>
  <committer>
    <name>Aaron Quint</name>
    <email>aaronquint@tie-fighter.local</email>
  </committer>
</commit>
