Я хочу отобразить модальное окно с сообщением об ошибке, когда пользователь ввел что-то недопустимое в форму, но представляет другое действие, если все в порядке. Однако, когда я пытаюсь отобразить модальное окно с
render :js => "jQuery.facebox(#{...})"
только фактический названный JavaScript отображен:
try {
jQuery.facebox(...)
} catch (e) { alert('RJS error:\n\n' + e.toString());
alert('jQuery.facebox(\"<div class=\'error\'>Error</div>\")');
throw e;
}
Попробуйте это
render :update do|page|
page << "jQuery.facebox(#{...})"
end
Возможно, вам следует указать в вызове jQuery dataType ожидаемого ответа.
Например:
$.ajax({
url: "/controller/action/id",
success: function(){
$(this).addClass("done");
},
dataType: 'script'
});
Вы пробовали поместить код в частичную? Так что вместо
render :js => "jQuery.facebox(#{...})"
попробуйте
render :partial => "my_facebox_popup"
Затем внутри вашего _my_facebox_popup.html.erb частично поместите свой код:
<script type = "text/javascript">
...
</script>
отладьте любые ошибки, которые вы получаете с firebug .