# Using params in a comparison

**URL:** <https://www.ruby-forum.com/t/using-params-in-a-comparison/138820>\
**Category:** Rails\
**Created:** [May 28, 2008, 3:04am UTC](https://www.ruby-forum.com/t/using-params-in-a-comparison/138820 "2008-05-28T03:04:43Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![paradise](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/8e7dd6/32.png) [@paradise](https://www.ruby-forum.com/u/paradise)\
**Post date:** [May 28, 2008, 3:04am UTC](https://www.ruby-forum.com/t/using-params-in-a-comparison/138820/1 "2008-05-28T03:04:43Z")

</div>

Hi, i will keep this short:

\<% for photo in @photos -%\>  
\<% if photo.other == params[:id] %\>  
\<%= link\_to image\_tag(photo.public\_filename(:thumb)) %\>  
\<% end %\>  
\<% end %\>

This is the code Im using and it is not displaying anything. All the  
values are stored correctly and params[:id] has the correct value. I  
think there is something wrong in the comparison: if photo.other ==  
params[:id]. Can you use the params hash to make comparisons like  
this?

thanks.

---

<div class="post-metadata">

**Author:** ![paradise](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/8e7dd6/32.png) [@paradise](https://www.ruby-forum.com/u/paradise)\
**Post date:** [May 28, 2008, 3:30am UTC](https://www.ruby-forum.com/t/using-params-in-a-comparison/138820/2 "2008-05-28T03:30:28Z")

</div>

Obviously photo.other does not equal params[:id]

What is .other?

On Wed, May 28, 2008 at 10:34 AM, Dave L. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> values are stored correctly and params[:id] has the correct value. I  
> think there is something wrong in the comparison: if photo.other ==  
> params[:id]. Can you use the params hash to make comparisons like  
> this?
> 
> thanks.
> 
> >

–  
Appreciated my help?  
Recommend me on Working With Rails  
[http://workingwithrails.com/person/11030-ryan-bigg](http://workingwithrails.com/person/11030-ryan-bigg)

---

<div class="post-metadata">

**Author:** ![paradise](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/8e7dd6/32.png) [@paradise](https://www.ruby-forum.com/u/paradise)\
**Post date:** [May 28, 2008, 3:36am UTC](https://www.ruby-forum.com/t/using-params-in-a-comparison/138820/3 "2008-05-28T03:36:24Z")

</div>

Other is a column in the database. So photo.other is the value in  
this column and I only want to display the photos where the  
params[:id] matches this photo.other value.

On May 27, 6:29 pm, “Ryan B. (Radar)” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![paradise](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/8e7dd6/32.png) [@paradise](https://www.ruby-forum.com/u/paradise)\
**Post date:** [May 28, 2008, 3:56am UTC](https://www.ruby-forum.com/t/using-params-in-a-comparison/138820/4 "2008-05-28T03:56:37Z")

</div>

Dave L. wrote:

> Other is a column in the database. So photo.other is the value in  
> this column and I only want to display the photos where the  
> params[:id] matches this photo.other value.
> 
> On May 27, 6:29 pm, “Ryan B. (Radar)” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

123 == “123” #=\> false

The params hash contains strings. A database column stored as an  
integer, will return an integer. And an integer will not equate to a  
string.

photo.other == params[:id].to\_i

or

photo.other.to\_s == params[:id]

---

<div class="post-metadata">

**Author:** ![paradise](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/8e7dd6/32.png) [@paradise](https://www.ruby-forum.com/u/paradise)\
**Post date:** [May 28, 2008, 4:05am UTC](https://www.ruby-forum.com/t/using-params-in-a-comparison/138820/5 "2008-05-28T04:05:06Z")

</div>

exactly what i was looking for. thanks.

On May 27, 6:56 pm, Alex W. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![paradise](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/8e7dd6/32.png) [@paradise](https://www.ruby-forum.com/u/paradise)\
**Post date:** [May 28, 2008, 5:05am UTC](https://www.ruby-forum.com/t/using-params-in-a-comparison/138820/6 "2008-05-28T05:05:57Z")

</div>

Just to add a bit of clarity: you should also keep in mind the Ruby  
idioms for object identity vs. object equality. This one still trips  
me up from time-to-time coming from Java to Ruby:

The == and .eql? methods in Ruby compare object equality (typically)  
where as the == operator in Java compares object identity (do these  
variables reference the same object?). Typically .equal? is used to  
compare object identity in Ruby.

* * *

> > s1 = “Rubies are red”  
> > s2 = “Rubies are red”  
> > s1 == s2 =\> true  
> > s1.eql? s2 =\> true  
> > s1.equal? s2 =\> false

* * *

> > s1 = “Rubies are red”  
> > s2 = s1  
> > s1 == s2 =\> true  
> > s1.eql? s2 =\> true  
> > s1.equal? s2 =\> true

* * *

Notice in the first example the two string have the same value (the  
same sequence of characters), but do not have the same identity. In  
the second case both s1 and s2 refer to the same string and do have  
the same identity.

---

<div class="post-metadata">

**Author:** ![paradise](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/8e7dd6/32.png) [@paradise](https://www.ruby-forum.com/u/paradise)\
**Post date:** [May 28, 2008, 8:23am UTC](https://www.ruby-forum.com/t/using-params-in-a-comparison/138820/7 "2008-05-28T08:23:22Z")

</div>

Wow, thanks a ton for that concise description … that just saved me  
probably an hour of digging in one of my books.
