erb strangeness

I'm using a relatively simple erb to generate output. However, though it works, it also produces a lot of 'false' words in the output. This is easier shown than described. Here is the erb:

<h1>Image Search page</h1> You can use this page to search for particular images in the GRECC collection of images, by specifying particular properties you are interested in. <% form_tag '/test' do -%> <hr/> <h2>Select Series of Interest:</h2> <table> <% counter = 0 %> <% @series.each do |k| %>   <%= counter%4==0 ? "<tr>" : "" %>     <td><small><%= k+":" %><%= check_box_tag @seriesmap[k] %></small></

  <%= counter%4==3 and counter > 1 ? "</tr>" : "" %>   <% counter += 1 %> <% end %> </table> <br /> <hr/> <h2>Select Years of Interest:</h2> <% @years.each do |y| %>   <%= y.to_s + ":" %>   <%= check_box_tag y.to_s %>   <% end %> <hr/> <div><%= submit_tag 'Search' %></div>

   <% end -%>

The line above is the culprit, and the problem is that you have used and instead of &&. and has very low precedence, so the above is equivalent to

(counter%4==3) and (counter > 1 ? "</tr>" : "")

(ie the whole expression evaluates to false if counter is not congruent to 3 mod 4)

&& has higher precedence, replacing the and with && would make it equivalent to

((counter%4==3) and (counter > 1)) ? "</tr>" : "")

which is what you want.

Fred

Ah, many thanks, I was thinking the difference between && and 'and'
was bitwise vs. logical.

Ken