我目前正在用Sinatra构建一个小应用程序,并针对保存表单数据到mysql数据库的问题运行。首先,我可以确认与数据库的连接正在工作,因为我使用twitter auth登录到应用程序,并将dat保存到其表中。无法使用datamapper与sinatra保存表单数据
形式是简单
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>
这个模型看起来像这样
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!
和西纳特拉路线是这样的:
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
闪光灯返回。林肯定这是一个明显的事情,但我不能看到我哪里错了任何地方。
为什么不记录dataMapper在保存失败时返回的错误?具体来说,log @ weight.errors - 它应该列举失败的任何验证。 – mcfinnigan 2013-03-25 10:40:19
我不知道该怎么做,我需要只需要在视图中输出? – 2013-03-25 10:45:13
谢谢,你的问题让我意识到我在表单标记中缺少method =“post”:) – ConorLuddy 2014-03-04 23:30:28