Cannot render JavaScript from Rails controller
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 JavaScrip开发者_Go百科t 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;
}
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.
Try this
render :update do|page|
page << "jQuery.facebox(#{...})"
end
Maybe you should specify in the jQuery call the dataType of the response you're waiting for.
E.g.:
$.ajax({
url: "/controller/action/id",
success: function(){
$(this).addClass("done");
},
dataType: 'script'
});
精彩评论