2011-08-19 47 views
0

我想创建一个简单的Web应用程序来记录学校的笔记,但数据库没有像我认为应该更新。这是代码。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> 

感谢

+0

你是从你的问题缺少你所预期的发生,和实际发生的细节。 – Phrogz

回答

2

我想你忘了设置title属性,在post /addnote路线。

它在您的模型中声明为required并且未设置。

尝试将此添加到您的这条路线,看它是否被保存:

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