Cannot render JavaScript from Rails controller

Hermine D. picture Hermine D. · May 17, 2010 · Viewed 7k times · Source

I want to display a modal window with an error message, when the user has entered something invalid in a form, but render another action if everything is OK. However, when I try to display the modal window with

render :js => "jQuery.facebox(#{...})"

only the actual JavaScript called is displayed:

try {
  jQuery.facebox(...)
} catch (e) { alert('RJS error:\n\n' + e.toString());
  alert('jQuery.facebox(\"<div class=\'error\'>Error</div>\")');
  throw e;
}

Answer

Schneems picture Schneems · May 18, 2010

Have you tried putting the code in a partial? So instead of

render :js => "jQuery.facebox(#{...})"

try

render :partial => "my_facebox_popup" 

Then inside of your _my_facebox_popup.html.erb partial put your code:

<script type = "text/javascript">
...
</script>

debug any errors you get with firebug.