A
AN@S
Hello,
I'm trying to create categories that have their own subcategories, and
each subcategory may have its own subcategories, .. and so on.
After some reading, I found out that the best way for creating such a
thing is to use acts_as_tree, but I didn't find any tutorial or article
that explain this in a clear way. After a lot of work I was finally
able to create categories and subcategories using the following code
explained in (Agile Web Development With Rails) book:
----------------------------------------------------------------
root = Category.create
name => "Books")
fiction = root.children.create
name => "Fiction")
non_fiction = root.children.create
name => "Non Fiction")
non_fiction.children.create
name => "Computers")
non_fiction.children.create
name => "Science")
non_fiction.children.create
name => "Art History")
fiction.children.create
name => "Mystery")
fiction.children.create
name => "Romance")
fiction.children.create
name => "Science Fiction")
------------------------------------------------------------------
And here is the database scheme:
------------------------------------------------------------
create table categories (
id int not null auto_increment,
name varchar(100) not null,
parent_id int,
constraint fk_category foreign key (parent_id) references
categories(id),
primary key (id)
);
------------------------------------------------------------
in the model:
------------------------------------------------------------
class Category < ActiveRecord::Base
acts_as_tree
rder => "name"
end
------------------------------------------------------
OK, my problem now is how to view something! Any category name, or any
subcategory or a list of categories, I tried a lot of things, like (in
the view):
---------------------------------------------------------
<ul>
<% for category in @categories %>
<li><%= link_to h(category.title), :action => 'edit', :id =>
category %>
<%= find_all_subcategories(category) %>
</li>
<% end %>
</ul>
----------------------------------------------------------
But I ALWAYS and whatever I try I got this error message:
"You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occured while evaluating nil.each
Extracted source (around line #2): <% for category in @categories %> "
What do you think the problem is?
If you know some tutorial that fully explain how to use acts_as_tree to
add and show categories that'll be great
I'm trying to create categories that have their own subcategories, and
each subcategory may have its own subcategories, .. and so on.
After some reading, I found out that the best way for creating such a
thing is to use acts_as_tree, but I didn't find any tutorial or article
that explain this in a clear way. After a lot of work I was finally
able to create categories and subcategories using the following code
explained in (Agile Web Development With Rails) book:
----------------------------------------------------------------
root = Category.create
fiction = root.children.create
non_fiction = root.children.create
non_fiction.children.create
non_fiction.children.create
non_fiction.children.create
fiction.children.create
fiction.children.create
fiction.children.create
------------------------------------------------------------------
And here is the database scheme:
------------------------------------------------------------
create table categories (
id int not null auto_increment,
name varchar(100) not null,
parent_id int,
constraint fk_category foreign key (parent_id) references
categories(id),
primary key (id)
);
------------------------------------------------------------
in the model:
------------------------------------------------------------
class Category < ActiveRecord::Base
acts_as_tree
end
------------------------------------------------------
OK, my problem now is how to view something! Any category name, or any
subcategory or a list of categories, I tried a lot of things, like (in
the view):
---------------------------------------------------------
<ul>
<% for category in @categories %>
<li><%= link_to h(category.title), :action => 'edit', :id =>
category %>
<%= find_all_subcategories(category) %>
</li>
<% end %>
</ul>
----------------------------------------------------------
But I ALWAYS and whatever I try I got this error message:
"You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occured while evaluating nil.each
Extracted source (around line #2): <% for category in @categories %> "
What do you think the problem is?
If you know some tutorial that fully explain how to use acts_as_tree to
add and show categories that'll be great