I’m trying to create a simple webapp to record notes for school, but the database isn’t updating like I think it should be. Here’s the code.
The sinatra app:
require 'rubygems'
require 'sinatra'
require 'datamapper'
DataMapper::setup(:default, "sqlite3://#{Dir.pwd}/school.db")
class Note
include DataMapper::Resource
property :id, Serial
property :class, Text, :required => true
property :title, Text, :required => true
property :content, Text, :required => true
property :created_at, DateTime
property :updated_at, DateTime
end
DataMapper.finalize.auto_upgrade!
get '/school' do
#
# @notes is nil
#
@notes = Note.all
@title = 'Notes'
erb :school
end
get '/' do
@title = 'Home'
erb :index
end
get '/addnote' do
erb :addnote
end
post '/addnote' do
n = Note.new
n.class = params[:class]
n.content = params[:content]
n.created_at = Time.now
n.updated_at = Time.now
n.save
redirect '/school'
end
And here’s the form
<section id="add">
<form action="/addnote" method="post">
<input type="text" name="class" placeholder="Class" />
<input type="text" name="title" placeholder="Title" />
<textarea name="content"></textarea>
<input type="submit" value="Take Note"/>
</form>
</section>
Thanks
I guess you forgot to set the
titleattribute in yourpost /addnoteroute.It is declared as
requiredin your model and does not get set.Try to add this to your that route to see if it gets saved: