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:
Image Search page
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 -%>
Select Series of Interest:
<% counter = 0 %>
<% @series.each do |k| %>
<%= counter%4==0 ? "" : "" %>
<%= k+":" %><%= check_box_tag @seriesmap[k] %>
<%= counter%4==3 and counter > 1 ? " |
" : "" %>
<% counter += 1 %>
<% end %>
Select Years of Interest:
<% @years.each do |y| %>
<%= y.to_s + ":" %>
<%= check_box_tag y.to_s %>
<% end %>
<%= submit_tag 'Search' %>
<% end -%>
And here is the first part of the generated output:
h1>Image Search page
You can use this page to search for particular images in the GRECC
collection of images, by specifying particular
properties you are interested in.
Select Series of Interest:
(7313/102/1)+(7313/6/76): |
false
<td><small>(7313/7/40)+(7313/103/1):<input id="seriesB"
name=“seriesB” type=“checkbox” value=“1” />
false
<td><small>+C 1.5mmAxT13dspgr:<input id="seriesB" name="seriesB"
type=“checkbox” value=“1” />
false
Anyone know where those 'false’s are coming from? It’s got me stumped.
Thanks,
Ken
On Oct 1, 8:14 pm, Kenneth McDonald [email protected]
wrote:
<%= counter%4==3 and counter > 1 ? "</tr>" : "" %>
Anyone know where those 'false’s are coming from? It’s got me stumped.
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 ? “” : “”)
(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)) ? “” : “”)
which is what you want.
Fred
Ah, many thanks, I was thinking the difference between && and ‘and’
was bitwise vs. logical.
Ken