Forum: Ruby on Rails Beginner: "NameError - uninitialized constant" when I create a model object

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.
8d88320f8ebfc1d5c5d95651e4ccddd9?d=identicon&s=25 packat (Guest)
on 2008-11-28 15:28
(Received via mailing list)
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>
81b61875e41eaa58887543635d556fca?d=identicon&s=25 Frederick Cheung (Guest)
on 2008-11-28 15:29
(Received via mailing list)
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 ?

Fred
8d88320f8ebfc1d5c5d95651e4ccddd9?d=identicon&s=25 packat (Guest)
on 2008-11-28 15:58
(Received via mailing list)
It is in app/models

On Nov 28, 9:28 am, Frederick Cheung <frederick.che...@gmail.com>
wrote:
> 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.

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


After posting the question, I blindly tried running
"ruby script/generate model compute"

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.




> Fred
Thanks Fred
81b61875e41eaa58887543635d556fca?d=identicon&s=25 Frederick Cheung (Guest)
on 2008-11-28 16:32
(Received via mailing list)
On Nov 28, 2:57 pm, packat <cpete...@gmail.com> wrote:
>
> 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
This topic is locked and can not be replied to.