can't list db content in rails

Hi all,
I am very very new to ruby and rails so I thought I'd follow a couple of
starter manuals.

Bellow the error I have listed versions and commands executed.

The problem I am having is that I can display:

http://acc.precognet.com/invoices/new

but when I try to display:
http://acc.precognet.com/invoices
or
http://acc.precognet.com/invoices/list

I get the following error:

NameError in InvoicesController#index
uninitialized constant Invoice

RAILS_ROOT: /var/www/acc.precognet.com/public/../config/..
Application Trace | Framework Trace | Full Trace
/usr/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_support/dependencies.rb:266:in
`load_missing_constant'
/usr/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_support/dependencies.rb:452:in
`const_missing'
/usr/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_support/dependencies.rb:464:in
`const_missing'
/usr/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_support/inflector.rb:250:in
`constantize'
/usr/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_support/core_ext/string/inflections.rb:148:in
`constantize'
/usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/pagination.rb:201:in
`paginator_and_collection_for'
/usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/pagination.rb:132:in
`paginate_without_deprecation'
/usr/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_support/deprecation.rb:94:in
`paginate'
/usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/scaffolding.rb:108:in
`list'
/usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/scaffolding.rb:96:in
`index'
/usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/base.rb:1101:in
`send'
/usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/base.rb:1101:in
`perform_action_without_filters'
/usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/filters.rb:696:in
`call_filters'
/usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/filters.rb:688:in
`perform_action_without_benchmark'
/usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/benchmarking.rb:66:in
`perform_action_without_rescue'
/usr/lib/ruby/1.8/benchmark.rb:293:in `measure'
/usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/benchmarking.rb:66:in
`perform_action_without_rescue'
/usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/rescue.rb:83:in
`perform_action'
/usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/base.rb:435:in
`send'
/usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/base.rb:435:in
`process_without_filters'
/usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/filters.rb:684:in
`process_without_session_management_support'
/usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/session_management.rb:114:in
`process'
/usr/lib/ruby/gems/1.8/gems/actionpack-1.13.5/lib/action_controller/base.rb:334:in
`process'
/usr/lib/ruby/gems/1.8/gems/rails-1.2.5/lib/dispatcher.rb:41:in `dispatch'
/usr/lib/ruby/gems/1.8/gems/rails-1.2.5/lib/fcgi_handler.rb:168:in
`process_request'
/usr/lib/ruby/gems/1.8/gems/rails-1.2.5/lib/fcgi_handler.rb:143:in
`process_each_request!'
/usr/lib/ruby/gems/1.8/gems/rails-1.2.5/lib/fcgi_handler.rb:109:in
`with_signal_handler'
/usr/lib/ruby/gems/1.8/gems/rails-1.2.5/lib/fcgi_handler.rb:142:in
`process_each_request!'
/usr/lib/ruby/site_ruby/1.8/fcgi.rb:600:in `each_cgi'
/usr/lib/ruby/site_ruby/1.8/fcgi.rb:597:in `each'
/usr/lib/ruby/site_ruby/1.8/fcgi.rb:597:in `each_cgi'
/usr/lib/ruby/gems/1.8/gems/rails-1.2.5/lib/fcgi_handler.rb:141:in
`process_each_request!'
/usr/lib/ruby/gems/1.8/gems/rails-1.2.5/lib/fcgi_handler.rb:55:in `process!'
/usr/lib/ruby/gems/1.8/gems/rails-1.2.5/lib/fcgi_handler.rb:25:in `process!'
/var/www/acc.precognet.com/public/dispatch.fcgi:24
Request

Parameters: {"invoices.html"=>nil}

Show session dump

The following is something I have discovered although I can't figure
out why...

My tables tend to end with an 's' such as clients but if I run the
following commands without the 's' (single client) , then it works

# ruby script/generate model client
      exists app/models/
      exists test/unit/
      exists test/fixtures/
      create app/models/client.rb
      create test/unit/client_test.rb
      create test/fixtures/clients.yml
      create db/migrate
      create db/migrate/001_create_clients.rb
# ruby script/generate controler client
      exists app/controllers/
      exists app/helpers/
      create app/views/client
      exists test/functional/
      create app/controllers/client_controller.rb
      create test/functional/client_controller_test.rb
      create app/helpers/client_helper.rb

http://acc.precognet.com/client
Listing clients
...

So even though I mention the wrong table name 'client' rather than
'clients', it works and the output says 'clients'!!

Any thoughts on this?
-Ed

Hi Ed

Using Active Scaffold makes data manipulation and display pretty
trival.

CCH
http://cch4rails.blogspot.com

Hi CCH,
Could you be a bit more specific?

The problem I had was for example:

1) table named clients
model and build using the client*s* fails

2) table named client
model and build using the client fails

3) table named clients
model and build using the client succeeds

Now I doubt very much that a requirement of rails is that all tables
should end with an 's' and all reference to them should 'lose' the
's'... so what am I doing wrong?
-Ed

Hi CCH

Hi CCH,
Could you be a bit more specific?

cch : What I meant was database web development is a breeze with
Active Scaffold plugin installed.

The problem I had was for example:

1) table named clients
model and build using the client*s* fails

2) table named client
model and build using the client fails

3) table named clients
model and build using the client succeeds

Now I doubt very much that a requirement of rails is that all tables
should end with an 's' and all reference to them should 'lose' the
's'... so what am I doing wrong?

cch: Yes, it is a Rails convention that all tables should end with an
's' unless you turn pluralization off.

CCH
http://cch4rails.blogspot.com

...

cch: Yes, it is a Rails convention that all tables should end with an
's' unless you turn pluralization off.

CCHhttp://cch4rails.blogspot.com

Hmmm, yes, just read about that. Odd but I guess taht with time I'll
understand why.

Thanks for your input, I am one step further in the learning curve :slight_smile:
-Ed

Well, thats not completely true. Tables should be plural (but not
necessarily with an s) and your models should be singular. It’s just a
conventions so that rails knows what table to look for, plus it makes
sense. Take the example of a table holding people’s information. The
table would be called people and the model would be person. This makes
sense since because there are multiple people in the table so the
table’s name rightly is “people”. When you pull a record from that
table and instantiate an object of your Person class, the singular name
“Person” then makes sense because it represents one person from a table
of people.

Hope this clears it up a bit,

-Bill

wrote: