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 was amazed that these five chapters only take about 160 pages and yet tell you all you need to know about successful projects. I’ve experienced a lot of these problems myself, and so did/do you, ...
-Javaddicts.net
Jared Richardson’s talk titled “Build Teams, not Products,” in particular, was one of the best presentations I’ve ever witnessed. It was just one of those talks where all the points seem tautologic...
-Yev Bronshteyn
...Much like the Mac, this book “just works”, because it takes the best from lessons learned from team leaders and team players and takes the mystery out of the project management processes as appl...
-Robert Pritchett

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

Richmond Java User's Group (2009-01-14)
Career 2.0: Take Control of Your Life
RTP Java Users Group (2009-01-19)
Agile Adoption: Introducing Change
Charleston Java Users Group (2009-01-28)
Credit Card Software Development: A Better Name for Technical Debt
New England Software Symposium (2009-03-20)
Back in Boston with new material for a new year!


© 2007 Agile Artisans.