1

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 の問題ですか?

4

1 に答える 1

3

どうですか

@user.errors.full_messages.join(",")
于 2012-04-27T00:09:04.207 に答える