Forum: Ruby on Rails Undefined method error

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.
Ilija Studen (Guest)
on 2006-01-23 11:30
Hi everybody,

Small problem. I get this error:

undefined method `all_categories' for BlogCategory:Class

Code of BlogCategory class is:

class BlogCategory < ActiveRecord::Base

  has_and_belongs_to_many :blog_posts

  validates_presence_of :name
  validates_uniqueness_of :name

  # Return all categories ordered by name
  def all_categories
    find :all, :order => 'name'
  end;

end

I call this function from FrontendController with simple:

@all_categories = BlogCategory.all_categories

As far as I can see there IS an all_categories method in BlogCategory
class, but from some reason I can't access it in controller.

Any ideas? I'm totally new to Ruby so I don't know where to start (tried
google, but with no luck).
Mikkel B. (Guest)
on 2006-01-23 11:39
Ilija Studen wrote:
> Hi everybody,
>
> Small problem. I get this error:
>
> undefined method `all_categories' for BlogCategory:Class
>
>   def all_categories
>     find :all, :order => 'name'
>   end;
>
>
> @all_categories = BlogCategory.all_categories
>

find is a class method.

do

 def all_categories
    BlogCategory.find :all, :order => 'name'
  end;
Ilija Studen (Guest)
on 2006-01-23 11:55
Hi,

Updated the code with:

def all_categories
  BlogCategory.find(:all, :order => 'name')
end

I still get the same error...
Lugovoi N. (Guest)
on 2006-01-23 12:01
(Received via mailing list)
def self.all_categories
   BlogCategory.find(:all, :order => 'name')
 end
Mikkel B. (Guest)
on 2006-01-23 12:31
Lugovoi N. wrote:
> def self.all_categories
>    BlogCategory.find(:all, :order => 'name')
>  end

yes...
Ilija Studen (Guest)
on 2006-01-23 14:01
Lugovoi N. wrote:
> def self.all_categories
>    BlogCategory.find(:all, :order => 'name')
>  end

That's it. Thanks :)
This topic is locked and can not be replied to.