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
毎回「/list」にリダイレクトされるため、ルートの「client.save」部分が false を返しているようです。#save ではなく #update メソッドを使用すると、DM は「ダーティ レコード」について文句を言います。
私が間違っていることについて何か考えがある人はいますか、または DataMapper と Sinatra を使用して SQLite でレコードを編集する例を教えてもらえますか?
ありがとう!