我正在用 Ruby 中的 Sinatra 和 Datamapper 编写一个简单的应用程序,但我遇到了麻烦——当我尝试将数据保存到我的 SQLite 数据库中时,什么都没有改变。但是当我尝试从 irb 安装数据库或更改数据时,它工作得很好。
这是我的 Datamapper 的设置、模型和数据库安装方法(效果很好):
DataMapper.setup(:default, "sqlite3://#{File.dirname(__FILE__)}/db.sqlite")
班级页面
包括 DataMapper::Resource
属性:id,序列号
属性:parent_id,整数
属性:标题,字符串,:长度=> 0..255
属性:slug,字符串,:长度 => 0..255
属性:正文,文本
属性:created_at,日期时间
定义儿童
Page.all(:parent_id => self.id)
结尾
默认安装
DataMapper.auto_migrate!
Page.new(:parent_id => 0,
:title => "主要",
:slug => "/",
:body => "这是主页。用你的替换它的文本",
:created_at => Time.now).save!
结尾
结尾
这是一段无法正常工作的代码:
发布 %r{/admin/edit/([\d]+)/?} 做
受保护!
#工作正常并从数据库中获取一行
@page = Page.get(params[:captures].first)
#update 不起作用,保存!方法也不行
@page.update :title => 参数[:title],
:parent_id => 参数[:parent_id],
:slug => 参数[:slug],
:body => 参数[:body]
重定向 request.path_info
结尾
这在 irb 中工作正常:
p = Page.get(1) p.update :title => "测试更新"
有谁知道有什么问题?
PS:我目前在 Windows 7 中工作,ruby 版本是 1.9.1p243(2009-07-16 修订版 24175)