1978 != 1978

S

Shandy Nantz

I have these years that I am trying to compare to see if they are equal
and when my code get to the right year in question where it is supposed
to equate to true, it doesn't. Here is my code:

<% 1900.upto(year) do |i| %>
<%= option_tag(i, i, @user.dobyear.to_s == i.to_s ? true : false) %>
<% end %>

When I do some 'puts' I get a condition where '1978' == '1978' and that
results in a false value and I can't figure out why. Why in Ruby does
this happen? Thansk,

-S
 
D

David A. Black

Hi --

I have these years that I am trying to compare to see if they are equal
and when my code get to the right year in question where it is supposed
to equate to true, it doesn't. Here is my code:

<% 1900.upto(year) do |i| %>
<%= option_tag(i, i, @user.dobyear.to_s == i.to_s ? true : false) %>
<% end %>

An aside: == returns true or false, so you don't have to do the whole
? true : false thing.
When I do some 'puts' I get a condition where '1978' == '1978' and that
results in a false value and I can't figure out why. Why in Ruby does
this happen? Thansk,

Are there spaces around @user.dobyear? I'm not sure what you mean
about puts, except that puts returns nil, but I'm not sure how that
fits in with your question.


David
 
S

Shandy Nantz

David said:
Hi --

On Sat, 20 Dec 2008, Shandy Nantz wrote:

An aside: == returns true or false, so you don't have to do the whole
? true : false thing.


Are there spaces around @user.dobyear? I'm not sure what you mean
about puts, except that puts returns nil, but I'm not sure how that
fits in with your question.


David

With 'puts' I just meant that I did some output statements to see if in
fact the values I was comparing were equal or not. As for the comparison
when I took out the true and false parts it worked, thanks,

-S
 
J

Josef 'Jupp' Schugt

* Shandy Nantz, 2008-12-20, 07:27:
I have these years that I am trying to compare to see if they are
equal and when my code get to the right year in question where it is
supposed to equate to true, it doesn't. Here is my code:

<% 1900.upto(year) do |i| %>
<%= option_tag(i, i, @user.dobyear.to_s == i.to_s ? true : false) %>
<% end %>

When I do some 'puts' I get a condition where '1978' == '1978' and
that results in a false value and I can't figure out why. Why in Ruby
does this happen?

It does not (checked). I suppose that the value of @user.dobyear only
looks as if it were '1978' while in fact it contains some non-print
character. Try 'p' to verify.

And consider removing the ternary operator abuse. It makes not too much
sense to have it results in true (false) if @user.dobyear.to_s ==
i.to_s is true (false); I think using the truth value proper is the
variant one should prefer.

Josef 'Jupp' Schugt
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,181
Messages
2,570,970
Members
47,537
Latest member
BellCorone

Latest Threads

Top