Forum: Ruby on Rails uninitialized constant

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.
Martin Smith (Guest)
on 2006-05-26 02:32
I have tried to create and use my own Exception class,
AmbigouosPlaceException.

I can't seem to use my exception though, as I get the following
FRUSTRATING error...

-----
Error
-----

uninitialized constant AmbiguousPlaceException

C:/app/ruby/lib/ruby/gems/1.8/gems/activesupport-1.3.0/lib/active_support/dependencies.rb:89:in
`const_missing'
C:/app/ruby/lib/ruby/gems/1.8/gems/activesupport-1.3.0/lib/active_support/dependencies.rb:120:in
`const_missing'
C:/app/ruby/lib/ruby/gems/1.8/gems/activesupport-1.3.0/lib/active_support/dependencies.rb:122:in
`send'
C:/app/ruby/lib/ruby/gems/1.8/gems/activesupport-1.3.0/lib/active_support/dependencies.rb:122:in
`const_missing'
#{RAILS_ROOT}/app/models/search.rb:34:in `search_by_category_and_place'
#{RAILS_ROOT}/app/controllers/searches_controller.rb:22:in `search'

------------------
SearchesController
------------------

require 'ambiguous_place_exception'
class SearchesController < ApplicationController

  def search
    create
    category = @search.category_string
    location = @search.location

    if Postcode.validate(location)
      @results = Search.search_by_category_and_postcode(category,
location)
    else
      begin
        @results = Search.search_by_category_and_place(category,
location)
      rescue AmbigouosPlaceException => e
        @places = e.places
  	render :action => 'choose_place'
      end
    end
  end
end

-----------------------
AmbigouosPlaceException
-----------------------

class AmbigouosPlaceException < RuntimeError
  attr :places

  def initialize(places)
    @places = places
  end
end

------
Search
------

require 'ambiguous_place_exception'
class Search < ActiveRecord::Base

  def self.search_by_category_and_place(category, place)

    # Find places by name
    places = Place.find_all_by_name(place)

    if places.size > 1
      e = AmbiguousPlaceException.new (places)
      raise e
    end

    ...truncated...
  end

end
This topic is locked and can not be replied to.