Model.find(:id) and model.find(:all) giving different result

I have the following code that works very well

@manufacturer = Manufacturer.find_manufacturer(params[:id])

which produces the following SQL:

SELECT * FROM manufacturers WHERE (manufacturers.id = 4) #Here
params[:id] =4

ON my view I can access the fields using

@manufacturer.field_name

However when I do the following

@manufacturer = Manufacturer.find(:all, :conditions => {:id =>
params[:id]})

Which produces the same SQL as above:

SELECT * FROM manufacturers WHERE (manufacturers.id = 4) #Here
params[:id] =4

I get the following error on my view:

NoMethodError in Public_manufacturers#show_manufacturer_details

Showing
app/views/public_manufacturers/show_manufacturer_details.html.erb where
line #4 raised:

undefined method `logo’ for #Array:0x26e4838

Why is this happening and how can I solve it?

Thank you in advance.

find(:all, …) returns an array.

find(:first, …), or equivalently, find_manufacturer(some_id) returns
a single item.

try:

@manufacturers = Manufacturer.find(:all, :conditions => {:id =>
params[:id]})

@manufacturers[0].show_manufacturer_details.

–wpd

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs