【发布时间】:2013-03-25 10:37:29
【问题描述】:
我目前正在使用 Sinatra 构建一个小型应用程序,并且遇到了将表单数据保存到 mysql 数据库的问题。首先,当我使用 twitter auth 登录应用程序并将 dat 保存到其表中时,我可以确认与数据库的连接正在工作。
形式简单
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!
而 sinatra 的路线是这样的:
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返回的错误?具体来说,记录@weight.errors - 它应该枚举所有失败的验证。
-
我不知道该怎么做,我只需要在视图中输出吗?
-
谢谢,您的问题让我意识到我的表单标签上缺少 method="post" :)
标签: mysql ruby database sinatra datamapper