0

我有这样的问题:我正在检查用户电子邮件并且无法告诉验证器该值是否有效。

我有这样的动作:

def checkemail
 respond_to do |format|
 format.jsonr do
  if User.where(email: params[:email]).exists? 
    render :json => {
        :status  => :false,
        }.to_json
   else
     render :json => {
        :status  => :true,
        }.to_json
     end
    end
  end
end  

这是jQuery:

    $(".sign_up").validate({
    rules: {
         "user[email]": {
          remote: {
            url: "http://127.0.0.1:3000/checkemail.jsonr",
            type: "get",
            data: {
              email: function() { return $("#email").val(); }
            }
          }
        }
    })

这是控制台的结果:

    Processing by EditUserController#checkemail as JSONR
    Parameters: {"user"=>{"email"=>"use@mail.com"}, "email"=>"use@mail.com"}
    ←[1m←[36mUser Exists (0.0ms)←[0m  ←[1mSELECT 1 FROM "users" WHERE "users"."email" = 
   'use@mail.com' LIMIT 1←[0m

所以验证没有通过,但应该。

还尝试传递页面状态代码,但失败了。

有人可以建议我的错误在哪里吗?

4

2 回答 2

0

尝试设置这些属性:

remote: {
  contentType: "application/json; charset=utf-8",  
  dataType: "json",
  ...
于 2012-09-14T06:26:24.020 回答
0

您应该使用 false/true 布尔值而不是 :false/:true

puts({:status => :false}.to_json)
{"status":"false"}

对比

puts({:status => false}.to_json)
{"status":false}
于 2012-09-14T07:08:36.523 回答