Sinatra で動作するように Datamapper 検証を取得しましたが、flash[:error]で表示しようとすると、括弧と引用符で囲まれたエラーが発生し続けます。
例: [「メールは既に取得されています」]
%w{sinatra haml data_mapper bcrypt sinatra/flash}.each { |gem| require gem }
DataMapper.setup(:default, ENV['DATABASE_URL'] || "sqlite3://#{Dir.pwd}/development.db")
class User
include DataMapper::Resource
property :id, Serial
property :email, String, :length => 255, :unique => true
property :password, String, :length => 255
property :password_salt, String, :length => 255
attr_accessor :password, :password_confirmation
validates_format_of :email, :as => :email_address
validates_confirmation_of :password
end
enable :sessions
get '/signup' do
haml :signup
end
post '/signup' do
@user = User.new(:email => params[:email], :password => params[:password],
:password_confirmation => params[:password_confirmation],
:password_salt => BCrypt::Engine.generate_salt)
if @user.save
redirect '/'
else
flash[:error] = @user.errors.full_messages # here is the problem (I think)
redirect '/signup'
end
end
DataMapper.auto_upgrade!
そしてsignup.haml
%h1 Sign up here!
- if flash[:error]
%p= flash[:error] ## Shortened for brevity (didn't include forms)
@user.errors.full_messagesで文字通りすべて、フラット化、to_sなどを試しましたが、括弧と引用符を取り除くものは何もないようです。
これは実際に gem sinatra-flash の問題ですか?