将 Datamapper 与 Sinatra 一起使用,保存文本属性非常容易:
DataMapper::setup(:default, "sqlite3://#{Dir.pwd}/tailor.db")
class Person
include DataMapper::Resource
property :id, Serial
property :name, String, :required => true
property :height, String, :required => false
end
DataMapper.finalize.auto_upgrade!
...
put '/:id/edit' do
p = Person.get params[:id]
p.name = params[:name]
p.height = params[:height]
p.save
end
和观点:
%form
%input{:type => 'text', :name => 'name'}
%input{:type => 'text', :name => 'height'}
%input{:type => 'submit', :value => 'Save'}
有了:type => 'text'
它是一件轻而易举的事。但是,我在尝试property :test, Boolean, :required => false
使用复选框设置布尔值 ( ) 时遇到了麻烦。这个问题是相似的,但没有解决如何做一个简单的布尔值。
此外,设置不接受任何字符串的值的最简单方法是什么,而只是一组预定义的选项——无论是作为允许一个选择的选择,还是一组允许多个选择的单选按钮?
编辑:
我想出了复选框:
p.bool = !params[:bool].nil?
在视图中:
%input{:type => 'checkbox', :name => 'bool', :value => "#{@bool}", :checked => @p.bool}