Beginner: "NameError - uninitialized constant" when I create a model object

My first Rails example using model and I got this NameError:
NameError in VandaController#att
uninitialized constant VandaController::Compute

Same code works fine if I don't create the Compute object.
What did I do wrong?

Here is the Controller
class VandaController < ApplicationController
  def att
    @compute = Compute.new
    @data1 = @compute.cmpt
  end
end

Here is the Model
class Compute
  def cmpt
    return 5
  end
end

And here is the view
<html>
  <head>
    <title>Model</title>
  </head>
  <body>
    <h1>reading data from a model</h1>
    <br>
    <br>
      Fetch : <%= @data1 %> from Compute model.
    <br>
  </body>
</html>

My first Rails example using model and I got this NameError:
NameError in VandaController#att
uninitialized constant VandaController::Compute

Is the model in compute.rb in app/models or lib ?

Fred

It is in app/models

It is in app/models

> On Nov 28, 1:49 pm, packat <cpete...@gmail.com> wrote:> My first Rails example using model and I got this NameError:
> > NameError in VandaController#att
> > uninitialized constant VandaController::Compute

> Is the model in compute.rb in app/models or lib ?

It is in app/models.

The important thing was whether the file was called compute.rb

I am following a book "Beginning Ruby on Rails" by Steven Holzner.
That book may be based on older version. Mine is 1.8.6

The important thing would be the rails version, not the ruby version.

and now get a different error:

ActiveRecord::StatementInvalid in VandaController#att
Mysql::Error: Table 'orchids.computes' doesn't exist: SHOW FIELDS FROM
`computes`

Apparently, a schema is created for Compute and Ruby thought ther is a
Compute table in the database.
So this is not helping any.

It would have created a migration to add that table but it would not
have run it. You can run it with
rake db:migrate

Fred