RJS Chaining Problem

Hi,

I am having a problem with the way RJS generates code. Say I have
html like this:

<div id="parent">
  <div id="child1"></div>
  <div id="child2"></div>
</div>

and RJS code like this:

parent = page["parent"]
parent.down('#child1').highlight
parent.down('#child2').highlight

the generated JS code becomes:

$("1").down("#a").highlight().down("#b").highlight();

which is incorrect, because the second down() starts from within
#child1, whereas it should have started from within #parent.

By not declaring the “parent” variable and use page[“parent”] for
every highlight() call it would work, but it’s not very DRY. I could
also append a bunch of up() and down() in a long chain, but the code
gets messy difficult to follow.

I was wondering if there are any good ways to generate code that are
correct, clean, and DRY?

Thanks in advance!

Bob

Hi Bob,

On Fri, 2009-09-04 at 18:53 -0700, bob wrote:

parent = page["parent"]

By not declaring the “parent” variable
I think maybe the problem you’re having results from declaring a
variable, and perhaps naming a DOM element, ‘parent’. parent is a
Javascript property; as in:

window.parent

Try using a different name and see if the problem persists.

HTH,
Bill

Oh, actually it’s just a simplified example code to focus on the
concept. The problem is that when I use a ruby variable containing an
element multiple times, RJS chains them together while disregarding
the traversal methods, which generates incorrect code.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs