         <tbody>
           {for link, i in @props.project.urls
             link._key ?= Math.random()
-            <tr key={link._key}>
+            <AutoSave key={link._key} tag="tr" resource={@props.project}>
               <td>
-                <ResourceInput resource={@props.project} update="urls.#{i}.label" />
+                <input type="text" name="urls.#{i}.label" value={@props.project.urls[i].label} onChange={handleInputChange.bind @props.project} />
               </td>
               <td>
-                <ResourceInput resource={@props.project} update="urls.#{i}.url" />
+                <input type="text" name="urls.#{i}.url" value={@props.project.urls[i].url} onChange={handleInputChange.bind @props.project} />
               </td>
               <td>
-                <button type="button" onClick={@handleRemoveLink.bind this, link}>
-                  <i className="fa fa-remove"></i>
-                </button>
+                <AutoSave resource={@props.project}>
+                  <button type="button" onClick={@handleRemoveLink.bind this, link}>
+                    <i className="fa fa-remove"></i>
+                  </button>
+                </AutoSave>
               </td>
-            </tr>}
+            </AutoSave>}
         </tbody>
       </table>
 
-      <button type="button" onClick={@handleAddLink}>Add a link</button>
+      <AutoSave resource={@props.project}>
+        <button type="button" onClick={@handleAddLink}>Add a link</button>
+      </AutoSave>
     </div>
 
   handleAddLink: ->

  handleRemoveLink: (linkToRemove) ->
    changes =
      urls: (link for link in @props.project.urls when link isnt linkToRemove)
    @props.project.update(changes).save()

module.exports = React.createClass
  displayName: 'EditProjectDetails'


ExternalLinksEditor = React.createClass
  displayName: 'ExternalLinksEditor'

  getDefaultProps: ->
    project: {}
