我正在添加答案。抱歉耽搁了各位。
首先归功于该插件:https://github.com/posabsolute/jQuery-Validation-Engine。
使用该插件在应用程序中进行验证。
在视图中,我有
<%= f.username_field :username, :id => 'free-user', :placeholder=>'User Name', :class => "validate[required, ajax[ajaxUserCall]]", "data-prompt-position" => "topLeft:0,9"%>
在同一视图中,在 javascript 中:
<script type="text/javascript">
$(document).ready(function(){
$("#free-user").bind("jqv.field.result", function(event, field, errorFound, prompText){
if(errorFound){
$(".continue").attr("disabled", false); // .continue is a button
} else{
$(".continue").attr("disabled", true);
}
})
});
</script>
在routes.rb中我有以下路线。
match '/check-user' =>"users#check_user" // creating route for ajax call
在 jquery.validationEngine-en.js 文件中,我有以下内容:
"ajaxUserCall": {
"url": "/check-user",
// you may want to pass extra data on the ajax call
"alertText": "* This user is already taken",
"alertTextLoad": "* Validating, please wait"
},
在用户控制器中,我有以下方法
def check_user
user = params[:fieldValue]
user = User.where("username = ?", username).first
if user.present?
render :json => ["free-user", false , "This User is already taken"]
else
render :json => ["free-user", true , ""]
end
end