Rails dev sinatra は初めてです...いくつかの簡単な検証をしようとしています。私がしようとすると:
validates_presence_of :email, message: "Email cannot be blank."
@emails.errors.each do |e|
puts e
end
シナトラが帰ってくる
[: errorI"^Rack::Lint::LintError: 本文が文字列以外の値を生成しました [:email, ["Email を空白にすることはできません。"]
その配列からエラー メッセージを抽出する方法と、このテーブルに適用する追加の検証を行うにはどうすればよいですか。
私はputs e.first
他のいくつかのオプションを試しましたが、どこにも行きません。これを別の方法で行う必要がありますか?
前もって感謝します!
# app.rb
require "sinatra"
require "Clipboard"
require "sinatra/activerecord"
require 'pony'
#basic auth
use Rack::Auth::Basic, "Enter Demo password." do |username, password|
[username, password] == ['censor', 'censor']
end
#options
set :port, 3000
# configure :development do
set :database, "sqlite3:///exceptDev.db"
# end
#end options
######################
#### MODELS #
######################
class Emails < ActiveRecord::Base
#validate fields
validates_presence_of :email, message: "Email cannot be blank."
end
######################
#### ROUTES #
######################
get '/' do
erb :index
end
get '/contact' do
#create email record
@fullname = params[:name].split
@emails = Emails.create(first_name: @fullname.first,
email: params[:email],
last_name: @fullname.last,
msg: params[:msg],
postcards: params[:postcards],
stickers: params[:stickers]
)
if @emails.save
redirect "/", notice: "HYFR!"
else
redirect "", errors: "wsdfasdf"
# @emails.errors.each do |e|
# puts e
# end #errors block
end #if save
end #contact action