要检查用户名/电子邮件可用性请执行以下操作:
使用https://github.com/posabsolute/jQuery-Validation-Engine
编辑对AJAX的validationsEngines-en.js文件调用,一个用于电子邮件看起来像下面这样:
"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"
},
确保您配置的routes.rb文件,以配合您要使用的路由,呼叫的默认操作是GET HTTP请求。
接着设置适当的动作在控制器来处理该请求(I包括在应用控制器的辅助,使得输入值可以被消毒之前查询在数据库中:
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
如果您不能确定正确的输入ID的,看在通话过程中传递的参数的服务器日志,并做了简单的复制粘贴。默认情况下,请求将输入ID和输入值。
要访问这个帮助增加以下内容:
应用控制器
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调用作为最后的验证。
不要忘记在文档的头部[按照js的顺序]包含jquery.js,jquery.validationEngine-en.js,jquery.validationEngine.js和validationEngine.jquery.css,并调用
<script type="text/javascript">$(function() {$("#FORM_ID").validationEngine();});</script>
如果您想为用户名执行此操作,请恰当地编辑上述内容。
我回答我的问题。我有它正在工作.. – Kumar 2011-12-29 19:50:05
您应该添加答案并稍后接受,以便有类似问题的其他人可以参考。 – 2011-12-30 08:07:51
这是'rails check username ajax'的谷歌搜索结果。你应该添加你的答案。 – 2012-01-07 05:30:04