我正在嘗試做一個簡單的房間管理服務。房間有這些屬性:如何使用DataMapper和Sinatra複選框?
class Room
include DataMapper::Resource
validates_is_unique :number
property :id, Serial
property :number, Integer
property :guest, String
property :status, Enum[ :free, :occupied ], :default => :free
end
然後,我創建通過這個HAML形式
%form#new_message{:action => '/new', :method => 'post'}
%p
%input{:type => "text", :id => "number", :name => "number"}
%input{:type => "text", :id => "guest", :name => "guest"}
%input{:type => "checkbox", :id => "status", :name => "status", :value => "occupied"}
%input{:type => "submit", :value => "post"}
一個新的空間這樣
post '/new' do
content_type :json
@room = Room.new :guest => params[:guest],
:number => params[:number],
:status => params[:status]
if @room.save
{ :number => @room.number, :guest => @room.guest, :status => @room.status }.to_json
end
end
當檢查框:狀態爲「佔領「但是當我放棄它時,對象不會保存。我認爲它會工作,因爲它默認爲「免費」,但沒有...
哦,這就是爲什麼...以及這個作品。涼。謝謝。我正在考慮將其設置爲布爾值,但我寧願將room.status(可用/佔用)稱爲room.free(true/false)。 – schwift 2010-07-05 11:21:44