0

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 でレコードを編集する例を教えてもらえますか?

ありがとう!

4

1 に答える 1

0

これは検証の問題であることが判明しました。検証を行っておらず、モデルにあるもの以外のデータ型をそれらのフィールドに入れると、#save メソッドは明らかに false を返します。

于 2010-02-19T05:27:08.630 に答える