Oh, one thing I just noticed is that you're trying to submit the form directly. Since CodeCombat is a single-page application, we want generally to submit forms asynchronously. Uploading files is a bit more tricky though, but this should help:
To check that your Jade file is correct, inspect the elements with your browser's dev tools. I don't notice anything particularly wrong about it, although the spacing is a bit varied. The tab spacing should always be 2. I'm not sure, for example, where the fieldset will end up because it's less tabbed than label or .controls, but it's more tabbed than .control-group.
You shouldn't be calling file.coffee or any of its methods. It's for interacting with GridFS, which is not needed in this case. It's just as an example of how to get a file from a form submission.
I'd do the following things:
- Switch to async form submission (the contact form should already be doing this in the original code, see contact_modal.coffee)
- Use Chrome to inspect the HTML and make sure it's what you want.
- Submit the form and use the Chrome Network tab to check that the file is actually being sent.
- On the server side, log the files property and see if it's giving you anything.