我正在尝试获取数据欧芹来验证用户名是否已经存在于数据库中。
我遇到的第一个问题是如何将JSON数据作为用户类型动态地包含“value”。我是否应该使用jQuery来实现这一点?
_system_account.erb
<%=
text_field_tag("access[username]",
value = nil,
options = {:"data-parsley-remote" => "" ,
:"data-parsley-remote-options" => "{ 'type': 'POST', 'dataType': 'json', 'data': { ':username': 'value' }}",
:"data-parsley-remote-validator" => "validate-username",
id:"username", placeholder: t('access.simple_username'),
required: "required", pattern: "[a-z0-9_-]{3,64}$",
:"data-parsley-trigger" => "keyup",
:"data-parsley-minlength"=>"3" ,
:"data-parsley-maxlength"=>"64"})
%>
当表单发生更改时,相关的javascript触发:
<script type="text/javascript">
$('#username').bind('input propertychange', function()
{
window.Parsley.addAsyncValidator('validate-username', function (xhr) {
// console.log(this.$element);
// jQuery Object[ input[name="q"] ]
var response = $.parseJSON(xhr.responseText);
alert( JSON.stringify(response) );
// Second Problem: How do I make data-parsley identify it is an error and mark the field red or something
}, '/application/check_username_exists');
}); </script>
application_controller.erb
这只是检查用户名是否存在。
def check_username_exists
username_exists = Access.exists?(username: params[:username])
respond_to do |format|
format.json { render json: {:"exists" => username_exists}.to_json }
format.html
end
end
发布于 2015-11-01 02:07:01
数据由欧芹填充,因此删除data: { ':username': 'value' }
。
由于在用户端有控件,所以最简单的方法是使用响应状态:
status = Access.exists?(username: params[:username]) ? :unauthorized : :ok
render nothing: true, status: status
无效状态(就像Invalid = 401)是针对无效字段的,.
https://stackoverflow.com/questions/33449777
复制相似问题