jQuery, RoR, validating fields against a database

I have a list of fields in a form that need to be validated against a
database.

I would prefer to have the validation occur every time the field loses
focus (onblur event) rather than when the user does a submit.

Does anyone know of an RoR example of how to do that?

jQuery validate?

http://docs.jquery.com/Plugins/Validation

Steve Ross wrote:

jQuery validate?

http://docs.jquery.com/Plugins/Validation

Oh wow! ... Thanks!!!!

Ralph Shnelvar wrote:

I have a list of fields in a form that need to be validated against a
database.

I would prefer to have the validation occur every time the field loses
focus (onblur event) rather than when the user does a submit.

Does anyone know of an RoR example of how to do that?

Remember not to rely on client-side validation. It's very useful, but
it's easy to turn off JS and bypass it.

Best,

Steve Ross wrote:

Ralph Shnelvar wrote:

Steve Ross wrote:

I have a list of fields in a form that need to be validated against a
database.

I would prefer to have the validation occur every time the field loses
focus (onblur event) rather than when the user does a submit.

Does anyone know of an RoR example of how to do that?

jQuery validate?

http://docs.jquery.com/Plugins/Validation

I think the jQuery validate function I want is "remote".

Is there any way for that function to call a RoR action in a model or
controller rather than more php or javascript?

If you can call PHP, you can call Rails. The client-side JS knows
nothing about the server-side scripting language.

Best,

It's easy. I don't have any code close at hand, but it's pretty straightforward -- stick the validation URL in an attribute you can access then use that. Just remember to have your authenticity certificate as part of the post data so Rails doesn't suspect a forgery.

Marnen's right, you shouldn't rely completely on client-side validation, but I typically do as much validation as possible on the client to avoid beating up the server and/or spoiling the client experience, then validate everything completely on the server to prevent attacks or mis-entries on the part of people who have disabled js.

Here's some old code I pulled off the shelf...uses jq validate

  var validator = $("#new_user").validate({
    rules: {
      "user[login]": {
          required: true,
          minlength: 3,
          remote: "/users/login_taken"
      }
                 }
         });

Pardon the abysmal formatting.