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