Kum*_*mar 4 ajax jquery ruby-on-rails ruby-on-rails-3
我正在使用带有jquery和ajax的rails来检查用户名的可用性.我使用以下插件进行jquery验证.
https://github.com/posabsolute/jQuery-Validation-Engine
在我的控制器中,我使用以下方法检查用户名可用性.
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
Run Code Online (Sandbox Code Playgroud)
这是编写方法的正确方法吗?我检查了这个论坛中的许多用户名可用性帖子,但没有任何结果.
我正在补充答案.对不起,迟到的家伙们.
首先归功于插件: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"%>
Run Code Online (Sandbox Code Playgroud)
在同一视图中,在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>
Run Code Online (Sandbox Code Playgroud)
在routes.rb中,我有以下路线.
match '/check-user' =>"users#check_user" // creating route for ajax call
Run Code Online (Sandbox Code Playgroud)
在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"
},
Run Code Online (Sandbox Code Playgroud)
在用户控制器中,我有以下方法
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5148 次 |
| 最近记录: |