Funny singularization/constantization in scaffold controller


#1

Hi all. I’m new to Ruby and Rails so please bear with. I’m creating
an app to maintain a birders life list. One of the Models I need is
Genus. The plural of Genus is Genera. So, my table is titled Genera
and in my genus.rb I have the line ‘self.table_name = “genera”’. My
first hurdle was that when I generate the scaffold it still wanted a
table called genus. Got around that by creating a view genus as
suggested somewhere. Now the scaffold (genus_maint) generates but when
I try to execute I get a “uninitialized constant Genu” when the list
method is trying to paginate:

@genus_pages, @genus = paginate :genus, :per_page => 10’

It’s as if rails is trying to singularize “genus”. Actually, what it
is really trying to do is constantize it.

Here’s the full trace:

/Applications/Locomotive2/Bundles/standardRailsSept2006.locobundle/i386/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_support/dependencies.rb:123:in
const_missing' /Applications/Locomotive2/Bundles/standardRailsSept2006.locobundle/i386/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_support/dependencies.rb:131:inconst_missing’
/Applications/Locomotive2/Bundles/standardRailsSept2006.locobundle/i386/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_support/inflector.rb:161:in
constantize' /Applications/Locomotive2/Bundles/standardRailsSept2006.locobundle/i386/lib/ruby/gems/1.8/gems/activesupport-1.3.1/lib/active_support/core_ext/string/inflections.rb:59:inconstantize’
/Applications/Locomotive2/Bundles/standardRailsSept2006.locobundle/i386/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/pagination.rb:194:in
paginator_and_collection_for' /Applications/Locomotive2/Bundles/standardRailsSept2006.locobundle/i386/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/pagination.rb:129:inpaginate’
#{RAILS_ROOT}/app/controllers/genus_maint_controller.rb:12:in list' #{RAILS_ROOT}/app/controllers/genus_maint_controller.rb:3:inindex’
/Applications/Locomotive2/Bundles/standardRailsSept2006.locobundle/i386/bin/mongrel_rails:18

Hope this looks okay. I haven’t tried any formatting on this question.

TIA for any advice.

the goob


#2

Hmmm.
Maybe in environment.rb an inflection rule?
Sorry, should have looked a little farther before posting.


#3

Okay. modified environment.rb with:

Inflector.inflections do |inflect|
inflect.irregular ‘genus’, ‘genera’
end

regenerated the model (still had to had the self.table_name = “genera”
to genus.rb)

regenerated the scaffold and voila


#4

the goob wrote:

Hi all. I’m new to Ruby and Rails so please bear with. I’m creating
an app to maintain a birders life list. One of the Models I need is
Genus. The plural of Genus is Genera.

Rails is not that clever when working out the plural or singular
versions of names - it makes good guesses though. You will need to
specify this in your config/environment.rb file:

Inflector.inflections do |inflect|
inflect.irregular ‘genus’, ‘genera’
end


#5

Ha

require ‘little_latin’
require ‘less_greek’
whatever works

this got caught by my spam filter so a slow reply.

take care


#6

askegg wrote:

Inflector.inflections do |inflect|
inflect.irregular ‘genus’, ‘genera’
end

Can’t you just

require ‘latin’

?

Ouch! Don’t hit! Don’t hit!!


Phlip
http://www.greencheese.us/ZeekLand <-- NOT a blog!!!