Rails 4アプリでregexを使って電子メールの検証を行うことができないようです。RegexがRails 4のアプリケーションで正しく検証されていない
Subscriber.rb
どんなに私の正規表現は、私は、「メールが無効です」というメッセージを取得するには、どのように簡単なclass Subscriber < ActiveRecord::Base
validates_uniqueness_of :email, :case_sensitive => false, message: "You're already subscribed!"
validates_format_of :email, :with => /@/i, message: "Email is invalid"
before_save { self.email = email.downcase if email}
end
。
私は何か明らかに間違っている(正規表現は私にとっては強い訴訟ではありません)。
ありがとうございます!部分を呼び出す
_subscribe.html.erb
<%= form_for Subscriber.new do |f| %>
<%= f.text_field :email, :class => "uppercase", :placeholder => "Stay in touch. Enter your email" %>
<%= f.submit :class => "submit uppercase", :value => 'submit' %>
<% end %>
ライン: <%= render :partial => 'shared/subscribe', :subscriber => Subscriber.new %>
subscribers_controller.rb
include SubscribersHelper
def create
@subscriber = Subscriber.new
if @subscriber.save(subscriber_params)
redirect_to(:back)
flash.notice = "You are now subscribed"
else
redirect_to(:back)
flash.alert = "There was an error with your subscription: "
flash.alert += @subscriber.errors.messages.values.join(", ")
end
end
SubscribersHelper.rb
def subscriber_params
params.require(:subscriber).permit(:email)
end
'@'が含まれているものがあれば、正規表現では '@ 'のない文字列で試してみると無効と表示されます – rock321987
正規表現を' /.* @。*/' - ' validates'は正規表現が文字列全体と一致することを期待しているかもしれません。 – javanut13
@ rock321987 - @が含まれていない文字列で試しても動作しませんでした。 –