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