Je suis en train d'apprendre Sinatra et DataMapper. Pour ce faire, j'ai joué avec un projet "base de données client".Modification d'enregistrements avec SQLite, DataMapper et Sinatra
Créer et supprimer des enregistrements est trivial et maintenant je travaille sur l'édition des enregistrements. Jusqu'à présent, j'ai réussi à assembler un formulaire dans mes vues et quelques routes que je pensais éditer un disque. Voici un code pour illustrer mon problème:
Mon vue edit.erb:http://gist.github.com/308405
Mes itinéraires modifier/mise à jour:
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
Il ressemble à la partie "client.save" de la route retourne false, parce que je suis redirigé vers "/ list" chaque fois. Si j'utilise la méthode #update plutôt que #save, DM se plaint de "dirty records". Tout le monde a des idées sur ce que je fais mal ou pouvez-vous me donner des exemples d'édition d'enregistrements dans SQLite avec DataMapper et Sinatra?
Merci!