使用SQLite,DataMapper和Sinatra编辑记录

时间:2010-02-19 04:14:29

标签: ruby sqlite sinatra datamapper

我正在学习Sinatra和DataMapper。为此,我一直在玩“客户数据库”项目。

创建和删除记录非常简单,现在我正在编辑记录。到目前为止,我已经设法在我的视图和一些我认为会编辑记录的路线中拼凑出一个表格。这里有一些代码来说明我的问题:

我的edit.erb视图: http://gist.github.com/308405

我的编辑/更新路线:

get '/edit/:acct' do
  @title = "Edit Client Data"
  @client = HE_Backend.get(params[:acct])
  erb :edit
end

post '/update/:acct' do
  client = HE_Backend.get(params[:acct])

  client.attributes = {
  :name => params['client']['name'],
  :company => params['client']['company'],
  :street => params['client']['street'],
  :state => params['client']['state'],
  :zip => params['client']['zip'],
  :phone => params['client']['phone'],
  :fax => params['client']['fax'],
  :website => params['client']['website'],
  :order_date => params['client']['order_date'],
  :payment_date => params['client']['payment_date'],
  :monthly => params['client']['monthly'],
  :setup => params['client']['setup'],
  :details => params['client']['details'],
  :notes => params['client']['notes'],
  :status => params['client']['status'],
  }

  if client.save
    redirect "/show/#{client.acct}"
  else
    redirect('/list')
  end
end

看起来路由的“client.save”部分返回false,因为我每次都被重定向到“/ list”。如果我使用#update方法而不是#save,DM会抱怨“脏记录”。

任何人对我做错了什么都有任何想法,或者你能指点我在SQLite中用DataMapper和Sinatra编辑记录的例子吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

结果证明这是一个验证问题。如果我没有适当的验证并将数据类型放在我的模型中除了那些字段之外,那么#save方法显然会返回false。