我正在用 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)