我正在使用 Rails 和 jquery 和 ajax 来检查用户名的可用性。我在用 以下插件用于 jquery 验证目的。
https://github.com/posabsolute/jQuery-Validation-Engine
在我的 Controller 中,我使用以下方法来检查用户名可用性。
def check_name
name = params[:name]
if name.strip == ""
render :json => { :available => false }
return
end
user = User.find(:first, :conditions => [ "name = ?", name])
if user
render :json => ["name", false , "This name is already taken"]
else
render :json => ["name", true , ""]
end
end
这是编写该方法的正确方法吗?我检查了许多用户名的可用性 在此论坛中发帖,但没有任何结果。
最佳答案
我正在添加答案。抱歉耽搁了各位。
首先归功于该插件:https://github.com/posabsolute/jQuery-Validation-Engine 。 使用插件在应用程序中进行验证。
在 View 中,我有
<%= f.username_field :username, :id => 'free-user', :placeholder=>'User Name', :class => "validate[required, ajax[ajaxUserCall]]", "data-prompt-position" => "topLeft:0,9"%>
在同一 View 中,在 java 脚本中:
<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"
},
在用户 Controller 中,我有以下方法
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
关于ruby-on-rails - 在 Rails 中使用 jquery 和 Ajax 检查用户名可用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8670868/