开发者

Editing records with SQLite, DataMapper, and Sinatra

I'm in the process of learning Sinatra and DataMapper. To do so, I've been playing with a "customer database" project.

Creating and deleting records is trivial and now I'm working on editing records. So far I've managed to piece together a form in my views and a couple of routes that I thought would edit a record. Here's some code to illustrate my issue:

My edit.erb view: http://gist.github.com/308405

My edit/update routes:

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

It looks like the "client.save" portion of the route is returning false, because I'm getting redirected to "/list" each time. If I use the #update method rather than #save, DM complains about "dirty records".

Anyone have any ideas as to what I'm doing wrong 开发者_如何学Pythonor can you point me to examples for editing records in SQLite with DataMapper and Sinatra?

Thanks!


This turned out to be a validations issue. If I don't have validations in place and put data types other than what's in my model in those fields, the #save method apparently returns false.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜