# Javascipt form validation in Rails

**URL:** <https://www.ruby-forum.com/t/javascipt-form-validation-in-rails/48084>\
**Category:** Rails\
**Created:** [November 12, 2005, 12:49pm UTC](https://www.ruby-forum.com/t/javascipt-form-validation-in-rails/48084 "2005-11-12T12:49:44Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![petermichaux](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/46a35a/32.png) [@petermichaux](https://www.ruby-forum.com/u/petermichaux)\
**Post date:** [November 12, 2005, 12:49pm UTC](https://www.ruby-forum.com/t/javascipt-form-validation-in-rails/48084/1 "2005-11-12T12:49:44Z")

</div>

Hi,

In PHP I was validating twice: client side and then server side.  
Certainly  
the code was not DRY but it made the user experience quicker and saved  
server requests. I thought of the client side validation as optimization  
of  
the application. In “Agile Web D. with Rails” there is no  
mention  
that I can find of purely client side form validation. Is this just not  
the  
Rails way?

If people are still doing validation twice like I used to do then I’m  
curious how they are handling it. Does it conflict with AJAX in any way?

Thanks,  
Peter

---

<div class="post-metadata">

**Author:** ![petermichaux](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/46a35a/32.png) [@petermichaux](https://www.ruby-forum.com/u/petermichaux)\
**Post date:** [November 12, 2005, 12:50pm UTC](https://www.ruby-forum.com/t/javascipt-form-validation-in-rails/48084/2 "2005-11-12T12:50:03Z")

</div>

Just thought I’d try again.

Peter

---

<div class="post-metadata">

**Author:** ![petermichaux](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/46a35a/32.png) [@petermichaux](https://www.ruby-forum.com/u/petermichaux)\
**Post date:** [November 12, 2005, 12:50pm UTC](https://www.ruby-forum.com/t/javascipt-form-validation-in-rails/48084/3 "2005-11-12T12:50:03Z")

</div>

On Thursday 10 Nov 2005 05:57, Peter M. wrote:

> In PHP I was validating twice: client side and then server side. Certainly  
> the code was not DRY but it made the user experience quicker and saved  
> server requests. I thought of the client side validation as optimization of  
> the application. In “Agile Web D. with Rails” there is no mention  
> that I can find of purely client side form validation. Is this just not the  
> Rails way?
> 
> If people are still doing validation twice like I used to do then I’m  
> curious how they are handling it. Does it conflict with AJAX in any way?

Hi Peter,

There’s various schools of thought on this, and while I don’t  
necessarily  
speak for “The Rails Way ™” of doing it, I _think_ a specific  
decision was  
made to do it server-side only in Rails.

I think it basically stems from the fact that client-side JavaScript  
validation with alert boxes and so on can get rather unwieldy, and since  
you  
have to do server-side validation anyway, and since rails makes it so  
easy to  
do the server side validation, and since validating it in two different  
ways  
is rather un-DRY, I think that’s essentially the reason Rails uses  
server  
side validation only.

I may be wrong about this, but I’m pretty sure this was what was said  
the last  
time this topic cropped up. Someone else please feel free to correct  
me!

Having said that, I wouldn’t be surprised if someone makes a plugin to  
do this  
sometime, since it would probably be quite easy to automatically create  
the  
JavaScript validation code from the model validations themselves.

I’m not certain I’m right about all this - just trying to answer your  
email  
since nobody else has yet! 🙂

Cheers,

~Dave

---

<div class="post-metadata">

**Author:** ![petermichaux](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/46a35a/32.png) [@petermichaux](https://www.ruby-forum.com/u/petermichaux)\
**Post date:** [November 12, 2005, 12:50pm UTC](https://www.ruby-forum.com/t/javascipt-form-validation-in-rails/48084/4 "2005-11-12T12:50:04Z")

</div>

On Fri, 2005-11-11 at 17:42 -0200, Alessandro Cauduro wrote:

> Dave,
> 
> Java/Struts (arghhhh), has a javascript error helper that generates  
> Javascript validation, as well as the standard server validation.
> 
> It can be nice to have this option to lower the load on the server. But it  
> also means that custom validations will have to be translated to Javascript,  
> therefore giving double the amount of work (not DRY) for the same result.

Client side validation also means you’re trusting that no-one will try  
to hack your get/post requests. Thats a pretty large trust. Javascript  
validations are only good for aesthetic reasons, and for situations  
where you think there will be alot of mistakes (I guess, since you don’t  
hit the server more than once).

-Matt B

---

<div class="post-metadata">

**Author:** ![petermichaux](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/46a35a/32.png) [@petermichaux](https://www.ruby-forum.com/u/petermichaux)\
**Post date:** [November 12, 2005, 12:50pm UTC](https://www.ruby-forum.com/t/javascipt-form-validation-in-rails/48084/5 "2005-11-12T12:50:04Z")

</div>

Dave,

Java/Struts (arghhhh), has a javascript error helper that generates  
Javascript validation, as well as the standard server validation.

It can be nice to have this option to lower the load on the server. But  
it  
also means that custom validations will have to be translated to  
Javascript,  
therefore giving double the amount of work (not DRY) for the same  
result.

Alessandro

-----Mensagem original-----  
De: removed\_email\_address@domain.invalid  
[[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)] Em nome de Dave S.  
Enviada em: sexta-feira, 11 de novembro de 2005 16:38  
Para: removed\_email\_address@domain.invalid  
Assunto: Re: [Rails] javascipt form validation in Rails

On Thursday 10 Nov 2005 05:57, Peter M. wrote:

> In PHP I was validating twice: client side and then server side. Certainly  
> the code was not DRY but it made the user experience quicker and saved  
> server requests. I thought of the client side validation as optimization  
> of  
> the application. In “Agile Web D. with Rails” there is no mention  
> that I can find of purely client side form validation. Is this just not  
> the  
> Rails way?
> 
> If people are still doing validation twice like I used to do then I’m  
> curious how they are handling it. Does it conflict with AJAX in any way?

Hi Peter,

There’s various schools of thought on this, and while I don’t  
necessarily  
speak for “The Rails Way ™” of doing it, I _think_ a specific  
decision  
was  
made to do it server-side only in Rails.

I think it basically stems from the fact that client-side JavaScript  
validation with alert boxes and so on can get rather unwieldy, and since  
you

have to do server-side validation anyway, and since rails makes it so  
easy  
to  
do the server side validation, and since validating it in two different  
ways

is rather un-DRY, I think that’s essentially the reason Rails uses  
server  
side validation only.

I may be wrong about this, but I’m pretty sure this was what was said  
the  
last  
time this topic cropped up. Someone else please feel free to correct  
me!

Having said that, I wouldn’t be surprised if someone makes a plugin to  
do  
this  
sometime, since it would probably be quite easy to automatically create  
the  
JavaScript validation code from the model validations themselves.

I’m not certain I’m right about all this - just trying to answer your  
email  
since nobody else has yet! 🙂

Cheers,

~Dave

---

<div class="post-metadata">

**Author:** ![petermichaux](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/46a35a/32.png) [@petermichaux](https://www.ruby-forum.com/u/petermichaux)\
**Post date:** [March 29, 2006, 10:48am UTC](https://www.ruby-forum.com/t/javascipt-form-validation-in-rails/48084/6 "2006-03-29T10:48:58Z")

</div>

On 11/10/05, Peter M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> If people are still doing validation twice like I used to do then I’m  
> curious how they are handling it. Does it conflict with AJAX in any way?

With AJAX you can validate once without having to define validations in  
JavaScript. I’ve just published a text on exactly this subject:  
[http://www.bigsmoke.us/ajax-validation-in-rails/](http://www.bigsmoke.us/ajax-validation-in-rails/)

Note that the page is untested in IE. If you find anything missing in  
the  
text, please let me know.

Cheers,

Rowan
