Use find with a variable

I got the id of a "part" in variable "the_id". In a partial "_order_fields.html.erb"

So I do this... @a = Part.find(the_id)

I get this error... Couldn't find Part without an ID

So I also try... @a = Part.find(the_id.to_i)

Get same error.

If I do @a = Part.find(2), it works. But I need to do the "find" using a variable, instead of hard-coding the value.

(I know I shouldn't be doing this in a view and I know the code is ugly by Ruby programming standards but I'm testing to see if it works, then I'll rename it)

What value does "the_id" have if you add a breakpoint before the find and inspect it?

Quoting Leonel *.* <lists@ruby-forum.com>:

I got the id of a "part" in variable "the_id". In a partial "_order_fields.html.erb"

So I do this... @a = Part.find(the_id)

I get this error... Couldn't find Part without an ID

Uhh, are you sure the_id has a numeric value at that point in the view? You don't say where or how it is set. Local controller variables are not shared with views, though controller instance variables are. And anything can be passed to a partial, though not regular view through the :locals hash.

HTH,   Jeffrey

Ah! found the solution: should've used "find_by_id", instead of just "find".

So, I do find the "part", using a = Part.find_by_id(the_id)

If I do <%= debug a %> I get...

This is very weird, even if I do a.methods, "cost" is there!

This is making me crazy, even if I do... <%= a %>

I get... #<Part:0x7f2fe2bf4cf8>

But as soon as I try to access the cost or name attributes I get... undefined method `cost' for nil:NilClass

and it's NOOT NIIILL!!!

Can you pastebin your controller / view code?

Leonel *.* wrote in post #1018495:

So, I do find the "part", using a = Part.find_by_id(the_id)

If I do <%= debug a %> I get... ---------------------- attributes:   name: Western Digital - Caviar GP 500GB Internal Hard Drive   created_at: 2011-08-23 18:54:12.214873   cost: 49.99   updated_at: 2011-08-23 18:54:12.214873   id: 2   [...] -------------------

but if I do a.cost

I get error... undefined method `cost' for nil:NilClass

How is it going to be a nil class? If I do a.class I get "Part", then it's NOT a nil class.

It's weird, if I do exactly the same thing in the console a.cost does work.

Do you get an error if you do this:

<% part = Part.find_by_id(the_id) part.cost %>

This is making me crazy, even if I do... <%= a %>

I get... #<Part:0x7f2fe2bf4cf8>

But as soon as I try to access the cost or name attributes I get... undefined method `cost' for nil:NilClass

Can you post the entirety of what's in your view?

Fred