Приложение Sinatra не обновляет базу данных - PullRequest
0 голосов
/ 19 августа 2011

Я пытаюсь создать простое веб-приложение для записи заметок для школы, но база данных не обновляется, как мне кажется.Вот код.

Приложение sinatra:

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

А вот форма

<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>

Спасибо

1 Ответ

2 голосов
/ 19 августа 2011

Полагаю, вы забыли установить атрибут title в вашем маршруте post /addnote.

Он объявлен как required в вашей модели и не устанавливается.

Попробуйтечтобы добавить это к вашему маршруту, чтобы посмотреть, будет ли оно сохранено:

if n.save
  redirect '/school'
else
  #show an error or something
end
...