Чтобы проверить имя пользователя / доступность электронной почты, выполните следующие действия:
Используя https://github.com/posabsolute/jQuery-Validation-Engine
, отредактируйте файл validationsEngines-en.js для вызовов AJAX, один для электронной почты будет выглядетьнапример:
"ajaxEmailAvailable": {
"url": "/route_to_send_the_parameters",
// you may want to pass extra data on the ajax call
"alertTextOk": "* This email is available",
"alertText": "* This email is already taken",
"alertTextLoad": "* Validating, please wait"
},
Убедитесь, что вы сконфигурировали свой файл rout.rb в соответствии с маршрутом, который вы хотите использовать, действие по умолчанию с вызовом - запрос GET HTTP.
Далеенастроить соответствующее действие в вашем контроллере для обработки запроса (я включил помощника в Application Controller, чтобы входное значение могло быть обработано перед запросом в базе данных:
КОНТРОЛЛЕР, ОБРАЩАЮЩИЙСЯ К ЗАПРОСУ
def username_availability
scrubb = help.sanitize(params[:fieldValue], :tags => '')
user = User.find_by_email(scrubb)
if user.blank?
render :json => ["INPUT_ID", true , ""]
else
render :json => ["INPUT_ID", false , "This email is already taken"]
end
end
Если вы не уверены в правильности идентификатора INPUT, посмотрите в журналах сервера параметры, переданные во время вызова, и выполните простую операцию копирования-вставки. По умолчанию запрос передает идентификатор INPUT и значение INPUT.
Чтобы получить доступ к этому помощнику, добавьте следующее:
КОНТРОЛЛЕР ПРИЛОЖЕНИЯ
def help
Helper.instance
end
class Helper
include Singleton
include ActionView::Helpers::TextHelper
end
Теперь на самой форме ваш ввод должен выглядеть какследующее:
<%= c.text_field :email, "data-validation-engine"=>"validate[required, custom[email], ajax[ajaxEmailAvailable]]" %>
В соответствии с соответствующей функциональностью всегда ставьте вызов AJAX в качестве последней проверки.
Не забудьте включить jquery.js, jquery.validationEngine-en.js,jquery.validationEngine.js и validationEngine.jquery.css в заголовке документа [в таком порядке js] и для вызова
<script type="text/javascript">$(function() {$("#FORM_ID").validationEngine();});</script>
Если вы хотите сделать это для имени пользователя, просто отредактируйте вышенадлежащим образом.