Я нахожусь в процессе изучения 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?
Спасибо!