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

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

...

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: