Forum: Ruby on Rails newbie: has_many

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Ce731b9c16ba840aa2c8c6277ab1b183?d=identicon&s=25 Peter Killik (xixao)
on 2009-02-18 23:23
I am sorry for the newbie question, but I am really stuck and I can't
work it out. :( Have 2 models. category and product (has_many and
belongs_to).

My routes.rb:
map.resources :categories do |category|
    category.resources :products
end

index in category controller:
def index
    @category = Category.find(params[:id])
    @products = @category.products
end

and then in my index.rhtml:

<% for product in @products %>
  <%= product.title %>....
<% end %>

it will end up with this error:
undefined method `title' for #<Class:0x54eb998>

I am sure the title is column name in my table. I can create a new
product, edit it, delete it, but I am not able to show the data
properly.

Can anyone help me? Thanks in advance.
Peter
Ef3aa7f7e577ea8cd620462724ddf73b?d=identicon&s=25 Rob Biedenharn (Guest)
on 2009-02-18 23:54
(Received via mailing list)
On Feb 18, 2009, at 5:23 PM, Peter Killik wrote:
> def index
>    @category = Category.find(params[:id])
>    @products = @category.products
> end
>
> and then in my index.rhtml:
>
> <% for product in @products %>
>  <%= product.title %>....
> <% end %>

Read:
http://blog.grayproductions.net/articles/the_evils...
and change to:

<% @products.each do |product| %>

> it will end up with this error:
> undefined method `title' for #<Class:0x54eb998>
>
> I am sure the title is column name in my table. I can create a new
> product, edit it, delete it, but I am not able to show the data
> properly.
>
> Can anyone help me? Thanks in advance.
> Peter

You're saying/showing CategoryController, but do you mean
ProductsController?

Since the undefined 'title' is attributed to #<Class:...> and not
#<Product:...> do you have a naked title somewhere that's being
interpreted as a method call on the anonymous view class? Is that the
correct line from the view?

-Rob

Rob Biedenharn    http://agileconsultingllc.com
Rob@AgileConsultingLLC.com
Ce731b9c16ba840aa2c8c6277ab1b183?d=identicon&s=25 Peter Killik (xixao)
on 2009-02-19 08:24
Rob Biedenharn wrote:
> Read:
> http://blog.grayproductions.net/articles/the_evils...
> and change to:
>
> <% @products.each do |product| %>


Thx Rob, I changed the for_loop and it works. THnaks.
Peter
This topic is locked and can not be replied to.