6

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;
}
2
  • The question is: What am I doing wrong? Commented May 17, 2010 at 15:57
  • Make sure you have a failsafe incase you user doesn't have javascript. otherwise they wouldn't know they were getting an error. As a personal rule i find that removing modal windows increases usability...doesn't really help the question, though thought i would share some words of wisdom. Commented May 17, 2010 at 22:04

3 Answers 3

7

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.

Sign up to request clarification or add additional context in comments.

Comments

1

Try this

 render :update do|page|
   page <<  "jQuery.facebox(#{...})"
 end

Comments

1

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' 
});

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.