문제

I'm using Inherited resources for my controllers. And now i have model:

class Sms < ActiveRecord::Base
end

And i want controller for it, where i make defaults:

class Admin::SmsesController < Admin::InheritedResources
  defaults :resource_class => Sms,
           :collection_name => 'smses',
           :instance_name => 'sms'
end

but i can not understand, why it still trying to get "Smse" model:

NameError in Admin::SmsesController#index
uninitialized constant Smse

Pls help.

도움이 되었습니까?

해결책

The problem is that Rails doesn't know that the plural of Sms is Smses. If you go to the Rails console you should see that:

> "Sms".pluralize
 => "Sms"

> "Smses".singularize
 => "Smse"

When faced with a plural it doesn't recognise, singularize just truncates the final "s", which is why your app is looking for a nonexistent Smse model.

You will save yourself a lot of headaches by configuring Rails to pluralize/singularize your models correctly. In the file config\initializers\inflections.rb you should find some examples of how to do this. What you want is:

ActiveSupport::Inflector.inflections do |inflect|
  inflect.irregular 'sms', 'smses'
end

Then I don't think you should need to put the defaults option in there at all - it should all work out of the box.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top