Ship It! LIVEShip It! LIVE
home about services writing contact

We develop, test, and create fine software products, and design creative solutions to your problems.
The development of software is an intrinsically creative process. We are dedicated to improving our mastery of the art.
Links · RSS Feed
Popular Pages

I haven't had the chance to read and review any books from the Pragmatic Programmers series. I decided to change that with the book Ship It! - A Practical Guide to Successful Software Projects by ...
-Thomas "Duffbert" Duff
They have gathered together the ‘best bits’ of various styles and methodologies they have been directly involved with, and combined them into a practical approach with the focus on delivering a pro...
-Mitch Wheat
..."Ship It!" is in the style of the other Pragmatic books and is an easy and focused read. I finished it in two days and have already gained a wealth of insight that I can apply immediately. Hig...
-Anil John

Problems with RJS (May 30)
I've had this problem repeatedly with RJS, and I'm not saying it's not something that I'm doing... in fact, if I had to take a bet on whether the problem is in my code or the RJS code, I'd bet it's my code. :)

Never the less, I've seen several pages online where this has been an issue for other people and it keeps coming back to haunt me, so here's my fix.

When you're using RJS to do JavaScript magic and you add something simple like

page.replace "main", :partial => "update_student"

and the JavaScript just shows up on the page you're trying to update, then you've found this issue. You see something like this in the browser:

try {
Element.replace("main", "
\r\n

\r\n Your updates have been recorded\r\n

\r\n
"); } catch (e) { alert('RJS error:\n\n' + e.toString()); alert('Element.replace(\"main\", \"
\\r\\n

\\r\\n Your updates have been recorded\\r\\n

\\r\\n
\");'); throw e }

The problem is that the RJS libraries didn't include the SCRIPT tag. I think it gets confused and thinks the tag is already in place.

The fix is pretty simple... add the SCRIPT tag. In RJS you can always add raw JavaScript to the page with the

 << 
operator. So I changed the RJS template above to read like this:


page << ' <SCRIPT type="text/javascript">'
page.replace "main", :partial => "update_student"
page << ' </SCRIPT>'

And it all works the way I think it should... which is to say, maybe not quite the way the authors intended for it to be used, but it seems to be working for me so far....

So, if you're using RJS and the JavaScript shows up on the page, just add an opening and closing set of SCRIPT tags before and after the RJS call in question.

Category: Rails

TISQA Software Testing Conference - Leap Into Testing for Tomorrow (2012-02-29)
My "Practical Test Automation" talk discusses why, and who, should be writing tests. (Hint, invite developers to this talk!)


© 2007 Agile Artisans.