【发布时间】:2017-05-10 07:44:15
【问题描述】:
型号:
class User < ApplicationRecord
VALID_EMAIL_REGEX = /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i
validates :email,
presence: true,
format: { with: VALID_EMAIL_REGEX }
end
HTML:
<%=
f.email_field :email,
placeholder: 'email',
class: "form-control",
id:"user_email",
data: {
parsley_required: "",
parsley_pattern: User::VALID_EMAIL_REGEX,
parsley_type: "email"
}
%>
编译后:
<input placeholder="email" class="form-control" id="user_email" data-parsley-required="" data-parsley-pattern=""(?i-mx:\\A([^@\\s]+)@((?:[-a-z0-9]+\\.)+[a-z]{2,})\\z)"" data-parsley-type="email" type="email" value="" name="user[email]">
不工作。请推荐
【问题讨论】:
-
JS RegExp 不支持内联修饰符和
\A/\z锚点。data-parsley-pattern应设置为"^[^@\s]+@(?:[-A-Za-z0-9]+\.)+[a-z]{2,}$"。 -
用您的建议值替换了用户常量。得到错误 activemodel-5.0.1/lib/active_model/validations/format.rb:44:in `check_options_validity': A regular expression or a proc or lambda must be provided as :with (ArgumentError)
-
查看JSFiddle。
-
我想在 Rails 应用程序中将正则表达式设置为常量
-
如果你像
VALID_EMAIL_REGEX = '[^@\s]+@(?:[-a-zA-Z0-9]+\.)+[a-z]{2,}',然后format: { with: Regexp.new("\\A#{VALID_EMAIL_REGEX}\\z") }和parsley_pattern: "^"+User::VALID_EMAIL_REGEX + "$",那样做呢?
标签: ruby-on-rails regex parsley.js