Sinatra 및 DataMapper를 배우는 중입니다. 그렇게하기 위해, 나는 "고객 데이터베이스"프로젝트를 가지고 놀았습니다.SQLite, DataMapper 및 Sinatra로 레코드 편집
레코드 만들기 및 삭제가 간단하고 이제 레코드 편집 작업을하고 있습니다. 지금까지 나는 기록을 편집 할 것이라고 생각했던 두 가지 경로와 내 견해를 하나로 묶어서 관리했습니다. 여기 내 문제를 설명하기 위해 몇 가지 코드는 다음과 같습니다
내 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"부분처럼 보인다 매번 "/ list"로 리디렉션되기 때문에 경로의 false가 반환됩니다. #save 대신 #update 메소드를 사용하면 DM이 "더티 레코드"에 대해 불평합니다.
누구나 내가 뭘 잘못하고 있는지에 대한 아이디어가 있거나 DataMapper 및 Sinatra를 사용하여 SQLite에서 레코드를 편집하기위한 예제를 가르쳐 주시겠습니까?
감사합니다.