Вот такой конгламерат пришлось мастерить. Суть:
С помощью Twitter Boostrap и функции modal() создал формуляр, загружаемый посредством AJAX (data-remote = true). Полученный формуляр должен проверяться с помощью библиотеки ClientSideValidations.
Проблема заключается в том, что Twitter Boostrap при переключении режима в видимый использует собственные events, (например ‘shown’), которые сбрасывают другие (в моем случае от client side validators) и потому скрипт ClientSideValidations в этом формуляре не работает.
Для того, чтобы подключить ClientSideValidations к загруженному через AJAX формуляру, согласно документации я активировал client side validators в удаленной загрузке формуляра
new.js.erb
$('#ajax_form_content').html("<%= escape_javascript( render(partial: 'form', locals: { stock: @stock }) )%>");
$('#ajax_form').modal();
$('.modal').on('shown', function(){
$(this).find('input:visible:first').focus().end().find('form').enableClientSideValidations();
});
Тем не менее возникала ошибка ClientSideValidations ‘settings not found’
Проблема решилась просто: нужно было добавить
$("form[data-validate]").validate()
в этот же скрипт, или более элегантно
$("body").bind "ajax:success", ->
$("form[data-validate]").validate() if $("form[data-validate]").length
в соответственный coffee-script