현재 Sinatra를 사용하여 작은 응용 프로그램을 만들고 있으며 mysql 데이터베이스에 양식 데이터를 저장하는 문제에 맞서 있습니다. 먼저 트위터 인증을 사용하여 앱에 로그인하면서 데이터베이스에 대한 연결이 작동하는지 확인하고 dat을 해당 테이블에 저장하고 있습니다. 그래서sinatra와 함께 datamapper를 사용하여 폼 데이터 저장하기
class Weight
include DataMapper::Resource
property :id, Serial, key: true
property :amount, Float
property :is_goal, Boolean, :default => false
property :created_at, DateTime, :required => true
belongs_to :user
end
DataMapper.finalize
DataMapper.auto_upgrade!
와시나 경로는 다음과 같이처럼
양식은
route: '/'
<form action="/create" method="post">
<p>
<label for="">Weight</label>
<input type="text" name="weight[amount]">
</p>
<p>
<input type="submit" id="">
</p>
</form>
모델은 보이는 간단하다 : 어떤 이유로 내가 입력 할 때마다 지금
post '/create' do
@weight = Weight.create(params[:weight])
if @weight.save
flash[:success] = "Its all saved now"
redirect '/'
else
flash[:failure] = "I Didnt save!"
redirect '/'
end
end
양식은
I didnt save
플래시로 돌아옵니다. Im는 이것이 명백한 물건이다라고 확신한다. 그러나 나는 기울지 않는다.
저장이 실패 할 때 dataMapper가 반환하는 오류를 기록하지 않는 이유는 무엇입니까? 특히, log @ weight.errors - 실패한 모든 유효성 검사를 나열해야합니다. – mcfinnigan
어떻게 그걸 할 수 있을지 모르겠다.보기에서 출력 할 필요가 없습니까? –
고마워, 너의 질문은 내 양식 태그에 method = "post"가 누락되었음을 깨닫게했다. – ConorLuddy