Notetagger - Getting down and dirty
In this installment of Project Notetagger I dig into the gritty, technical details and start writing real code. The database and model is created, the first HTML output and I even get around to adding Ajax. All in a few hours of development.
Model and database
Notes are the central part of Notetagger, obviously, so it seems like a good place to start. In my world, a note can consist of a title and some content, and be tagged with some tags. This leaves me with a table looking like:
CREATE TABLE notes ( id INT NOT NULL AUTO_INCREMENT, title VARCHAR(255), content TEXT, tag_string VARCHAR(255), created_at DATETIME, updated_at DATETIME, PRIMARY KEY (id) );
But first things first, I needed a Rails application and some database to work on, so I fired up MySQL, created 2 databases, notetagger_test and notetagger_development (yeah, no production, I’m being sceptic here) and added the notes table as above.
Putting stuff on rails
I now have a database with a table, I needed to add the Rails part of the application. That’s easily done:
> rails notetagger
All I needed then is to change the config/database.yml to use my newly generated database and I am ready to start using rails.
A good way to start out is by using Rails’ scaffold feature which creates an initial model, controller and some views to base further development on:
> script\generate scaffold Note
This creates nearly all the basic stuff I need. To check it out I launched Webrick and pointed my browser at http://localhost:3000/notes/ and my oh my, I got the scaffolded pages showing me all the notes in my database – which means none.
To have a little sample data I entered a couple of notes via the scaffold, and I saw it was good.
Making it look better
To be honest I could probably have stopped here. I had an application that could serve me well for storing notes. But nuh uh, it didn’t look good – and besides, I really wanted to mess around with Ajax. Time to dive into the views.
The first view to suffer was views/notes/list.rhtml. Trivial use of DateHelper, TextHelper, and some changes to the view/controller/notes_controller.rb transformed the list into a rough sketch of what I was aiming for.
For good measure, I also dug into the views/notes/_form.rhtml partial to change it into something more usable (Basically removing the internal date fields). Now it’s starting to look like a real application.
Continue to Adding tags